[Issue 892] Another bug in the new GC - pointers in mixins
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Fri Jan 26 13:33:17 PST 2007
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=892
------- Comment #1 from wbaxter at gmail.com  2007-01-26 15:33 -------
OK, the compiler was being a bit too smart apparently, realizing that x would
no longer be used.  That makes the test appear to fail all the way back to DMD
0.176.  So I should have put writeflns in at the end to make sure the data had
a reason to stick around.
Upon doing that, the example works in DMD 1.0 and fails in 1.001--1.003 (I went
ahead and tried them all).
Here's the modified test:
-----------------
import std.stdio;
static import std.gc;
class SomeObject
{
    this() { writefln("SomeObject created"); }
    ~this() { writefln("SomeObject destroyed"); }
}
template Mix()
{
    void init() {
        ptr = new SomeObject;
    }
    SomeObject ptr;
}
class Container
{
    this() { init(); }
    mixin Mix;
    int v = 10;
}
void main()
{
    auto x = new Container;
    writefln("---Pre collect");
    std.gc.fullCollect();
    writefln("---Post collect");
    writefln(x.v);
    writefln(x.ptr);
}
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list