[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