May 25, 2010 [Issue 4232] New: Local struct member variable can be returned by ref | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4232 Summary: Local struct member variable can be returned by ref Product: D Version: 2.041 Platform: x86 OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: rsinfu@gmail.com --- Comment #0 from Shin Fujishiro <rsinfu@gmail.com> 2010-05-24 23:21:52 PDT --- Using struct members bypasses the compiler check for escaping reference to local variables. This code should not compile: -------------------- struct S { int a; } ref int test() { S s; s.a = 42; return s.a; } void main() { auto p = &test(); // reference to the local variable assert(test() == 42); // assertion fails with -O } -------------------- Moreover, test() in the above example returnes a corrupted (or uninitialized) value when optimization is on. This causes unittests for std.functional.toDelegate() to segfault. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation