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..