On Sunday, 20 September 2015 at 18:50:44 UTC, Adam D. Ruppe wrote:
On Sunday, 20 September 2015 at 18:41:18 UTC, anonymous wrote:
But that doesn't change either. I think Adam is mistaken here.

huh, I just checked the source... and you are right, it doesn't set classes to null itself, but does null out the vtable inside.

        *ppv = null; // zero vptr even if `resetMemory` is false

druntime/src/rt/lifetime.d line 1373

So that's why it is segfaulting, the table of virtual functions is nulled after it is destroyed rather than the reference.

Oops, I think I replied too fast, did not read this reply of yours, which answers some of my questions. If the vtable is nulled then this will always lead to a segfault when methods of deleted object are called, which is good because doing so is a programming error anyway, but at least it does not lead to weird memory corruptions etc..

Reply via email to