http://d.puremagic.com/issues/show_bug.cgi?id=5533
Summary: DMD segv: -gc, associative arrays, const pointers to self Product: D Version: D2 Platform: x86 OS/Version: Linux Status: NEW Severity: regression Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: webmas...@villagersonline.com --- Comment #0 from Russ Lewis <webmas...@villagersonline.com> 2011-02-06 12:50:03 PST --- Regression from 2.050 to 2.051 (Linux). When compiling with -gc -c, the testcase below will cause 2.051 to segv. File compiles OK on 2.050. File also compiles just fine (even on 2.051) if -gc is omitted. DMD produces expected link errors if you compile with only -gc argument. The key issues appear to be: - The foreach loop inside the function. - The parent pointer in Foo must be *BOTH* const and a pointer to its own type. If you make it non-const, or a pointer to something else, it works. TESTCASE: void DMD_BUG_WORKAROUND() // issue 3770 { /* if you don't have a dummy function like this in the module where a type * was declared, then dmd won't give it to you when you use it in an * associative array elsewhere, and you'll get link errors. */ Foo tmp; string dummy; foreach(name; tmp.table.keys) dummy ~= name; } struct Foo { const(Foo) *parent; FooElem*[string] table; }; struct FooElem { }; -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------