On Monday, 4 November 2013 at 22:09:45 UTC, jerro wrote:
void main() {
auto s = CFS(1.0);      // crash
//auto s = CFS(1, Y()); // crash
//auto s = CFS(1, Y([])); // works
writeln(s);
}

What do you mean by crash ?

It's segfaults. It doesn't happen if you change 1.0 literal to
some other value,
say 2.0. It's a truly bizarre bug.

Here's a slightly simplified case:

import std.stdio;

struct Y {
     int[] _data;
}

struct CFS {
     double x;
     Y growth;
}

void main() {
     auto s = CFS(2.0);
     writefln("%x", s.growth._data.length); // prints
3ff0000000000000
}

It doesn't happen with -O, or when compiled with LDC or GDC.

Can't reproduce on Git master x86_64 linux. Prints 0 no matter what flags are used.

Reply via email to