[dmd-beta] Struct Comparision WTF: Is the new or old behavior right?
David Simcha
dsimcha at gmail.com
Fri Dec 9 22:36:08 PST 2011
Using DMD 2.057 beta:
// test2.d:
import std.stdio;
struct S {
double d; // NaN
}
void main() {
S s;
writeln(s == S.init);
}
$ dmd test2.d -m32
$ ./test2
true
$ dmd test2.d -m64
$ ./test2
false
Somehow I think it's a bad idea to have the result of this comparison
change depending on whether you're compiling in 32- or 64-bit mode. I
just spent a few hours debugging Plot2kill because this behavior changed
between releases in 64-bit mode, and I was comparing font structs to
their .init values to determine whether they had already been
initialized. Everything worked in 32-bit mode but failed in 64-bit
mode. In 64-bit mode it looked like the structs had already been
initialized (e.g. titleFont == Font.init is false) so they never got
initialized. Needless to say, GTK does weird things when you pass in a
NaN as a font size.
More information about the dmd-beta
mailing list