[Issue 1979] New: Anonymous class with confused context pointer

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Apr 8 11:09:51 PDT 2008


http://d.puremagic.com/issues/show_bug.cgi?id=1979

           Summary: Anonymous class with confused context pointer
           Product: D
           Version: 1.028
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: benoit at tionex.de


The following snippet shows an inner anonymous class, that uses the constructor
to copy local values to member var. This is to make a closure behaviour.

When the inner class later tries to access the outer class, a segmentation
fault happens.

The compiler should either given an error or it should work.

void main(){
    auto o = new Outer;
    o.run(5);
}

interface Intf {
    void doIt();
}

class Outer {
    int i;
    void inc( int v ){
        i += v ;
    }
    void run( int v2 ){
        auto i = new class Intf {
            int v2_;
            this(){
                v2_ = v2;
            }
            void doIt(){
                inc( v2_ ); // (1) segmentation fault
            }
        };
        i.doIt();
    }
}


-- 



More information about the Digitalmars-d-bugs mailing list