On Friday, 8 February 2019 at 23:30:44 UTC, H. S. Teoh wrote:
On Fri, Feb 08, 2019 at 10:45:39PM +0000, JN via
Digitalmars-d-learn wrote: [...]
Anyway, I reduced the code further manually. It's very hard to
reduce it any further. For example, removing the assignments
in fromEulerAngles static method hides the bug. Likewise,
replacing writeln with assert makes it work properly too.
Pity we couldn't get rid of std.stdio. It's a pretty big piece
of code, and there are plenty of places where it may go wrong
inside, even though we generally expect that the bug lies
elsewhere. Oh well. Hopefully somebody else can dig into this
and figure out what's going on.
Hmm. I just glanced over the std.stdio code... it appears that
somebody has added @trusted all over the place, probably just
to get it to compile with @safe. That's kinda scary...
somebody needs to vet this code carefully to make sure nothing
fishy's going on in there!
T
I can replace it with core.stdc.stdio if it's any better. Looks
like any attempt to do a check for "x is null" hides the bug. I
tried assert(), also tried if (x is null) throw new Exception(...)