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

Reply via email to