digitalmars.D.bugs - [Issue 15627] New: safe code generates access violation
- via Digitalmars-d-bugs (46/46) Jan 29 2016 https://issues.dlang.org/show_bug.cgi?id=15627
https://issues.dlang.org/show_bug.cgi?id=15627 Issue ID: 15627 Summary: safe code generates access violation Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: matt.elkins gmail.com The following code will generate an access violation on DMD 2.070 [code] safe: struct Foo(alias Callback) { ~this() {Callback();} } unittest { uint stackVar; void bar() {++stackVar;} alias FooType = Foo!(bar); FooType foo = FooType.init; } [/code] [output] object.Error (0): Access Violation ---------------- 0x00405F46 in safe void test.__unittestL9_4().bar() at <path>\test.d(12) 0x00405F5D in safe void test.Foo!( safe void test.__unittestL9_4().bar()).Foo.__dtor() at <path>\test.d(6) 0x00405F37 in safe void test.__unittestL9_4() at <path>\test.d(14) 0x00405FB8 in void test.__modtest() 0x0040B635 in int core.runtime.runModuleUnitTests().__foreachbody1(object.ModuleInfo*) 0x004153CF in int object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)).__lambda2(immutable(object.ModuleInfo*)) Program exited with code 1 [/output] Line 12 is the definition of bar(). Line 6 is the destructor of Foo. Line 14 is the assignment of foo from FooType.init. --
Jan 29 2016