On Wed, 15 Dec 2010 12:46:34 -0500, Stanislav Blinov <bli...@loniir.ru>
wrote:
15.12.2010 0:05, Craig Black пишет:
Thanks Steve. clear seems to be calling the destructor twice. Is this
intentional?
-Craig
AFAIR, it's not 'clear()' that calls destructor twice. Some time ago,
there has been discussion on how to properly implement clear(). Initial
implementation calls dtor, then calls default ctor to leave the object
in a meaningful state for the GC to consume. Therefore, when object is
being collected, dtor gets called for a second time. The discussion
ended on the proposal of nullifying objec't vtbl instead of calling
default ctor, which will obviate the need of a second dtor call, but I
think this is not currently implemented.
No, the issue is different. Struct dtors are not called when GC memory is
collected. I found the issue. I just checked in a fix:
http://www.dsource.org/projects/druntime/changeset/451
-Steve