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

Reply via email to