On Wednesday, 23 October 2013 at 14:43:07 UTC, Dicebot wrote:
Can you check the value of `double` field in the copy origin
(immediately after initialization). It may have something to do
with floating arithmetic.
// updated (b.v and writeln)
void main()
{
Foo a;
Foo b;
b.v = null;
b.i = 0x7ff7a502;
writeln("b.d: ", b.d);
copy(&a, &b);
writef("a.i: %x\n", a.i);
writeln("a.d: ", a.d);
}
Linux:
$ dmd -version=one test.d && ./test
b.d: nan
a.i: 7ff7a502
a.d: nan
$ dmd -version=two test.d && ./test
b.d: nan
a.i: 7fffa502
a.d: nan
OS X:
$ dmd -m32 -version=one test.d && ./test
b.d: nan
a.i: 7ff7a502
a.d: nan
$ dmd -m32 -version=two test.d && ./test
b.d: nan
a.i: 7ff7a502
a.d: nan