digitalmars.D - Temporary static arrays on stack get corrupted with dmd -m64
- H. S. Teoh (26/26) May 09 2012 Code (compile with dmd -m64):
Code (compile with dmd -m64): import std.stdio; struct S { short[4] x; this(short[4] args...) { x[] = args[]; } bool opEquals(in S s) const { for (auto i=0; i < 4; i++) { if (this.x[i] != s.x[i]) return false; } return true; } } void main() { assert(S(1,2,3,4) == S(1,2,3,4)); } Output: the assertion in main fails. Inserting writeln's indicate that the parameter s to opEquals is corrupted (has garbage values). Trying to writeln either argument causes a segfault. Compiling with -m32 works no problem. Is this a known issue? T -- This is a tpyo.
May 09 2012