This happened to me when I designed data structures for CD sectors, and used an outer struct to wrap all the different sector layouts (Mode1/2 CDs, ...). The short code below is more suited for a unittest: struct Outer { struct Inner1 { union { Inner2 a; } byte I_AM_AT_THE_WRONG_OFFSET; } align(1) struct Inner2 { ubyte x; } } void main() { writeln(Outer.Inner1.I_AM_AT_THE_WRONG_OFFSET.offsetof); } This prints '0', which means that field 'I_AM_AT_THE_WRONG_OFFSET' wasn't correctly offset behind field 'a'. It works correctly when a) align(1) is removed b) Inner2 is declared before Inner1 c) 'a' is not inside a union block
Returns 1 on Win32 2.059
Yes, it has been fixed in the mean time. Add this to the solved bugs for 2.059!