www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1979] New: Anonymous class with confused context pointer

reply d-bugmail puremagic.com writes:
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 digitalmars.com
        ReportedBy: benoit 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();
    }
}


-- 
Apr 08 2008
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1979






This doesn't segfault for me in DMD1.042. Has it been fixed?


-- 
Apr 18 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1979


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug yahoo.com.au
         Resolution|                            |FIXED



This was fixed in either 1.029 or 1.030. Works now.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 16 2009