https://issues.dlang.org/show_bug.cgi?id=17218
Issue ID: 17218 Summary: foreach on tupleof inside switch returns ref to undefined address Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: minor Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: alex.golt...@gmail.com ``` import std.stdio; struct S { int x; } S s; void main() { foreach (i, ref m; s.tupleof) { writefln("%s %s, %s", &s.tupleof[i], &m, m); } switch (0) { foreach (i, ref m; s.tupleof) { case i: writefln("%s %s, %s", &s.tupleof[i], &m, m); } default: } } ``` Output: ``` 7FAEC3D00260 7FAEC3D00260, 0 7FAEC3D00260 10DBF58F7, 15760771 ``` Sometimes it crashes on segmentation fault since it doesn't really copy `m` where it thinks it is. Same happens when `s` is `__gshared S s;`. Reproduces both on `dmd v2.071.0 on OSX` and `ldc2 1.1.0git-3139c87 on linux`. --