On 3/3/15 9:22 AM, Kagamin wrote:
On Saturday, 28 February 2015 at 04:18:38 UTC, ketmar wrote:
His case is not @safe, so we can ignore that problem.

the compiler tends to disagree:

=== test.d ===
int myglobal;

class A {
  ~this () @safe { if (myglobal == 42) assert(0); }
}

void main () {
  auto a = new A;
}
======

dmd -w -c -o- test.d

wow! no warnings, no errors!

And what's the problem?

This:

void main()
{
   myglobal = 42;
   spawnThread((){myglobal = 0; auto a = new A; a = null; while(1){}});

   // trigger assert in A.dtor.
   int[] mem;
   while(1)
   {
      mem.length += 10000;
   }
}

-Steve

Reply via email to