Allin Cottrell wrote:
>
>
> Isn't that undefined behavior, trying to access the wrong member of a
> union?
Yes. I am using that to force a bad floating point value.
> Here (gtk 2.0.6) it prints "0.00", but I don't see that it's
> obliged to.
>
I feel it should not crash on any input.
I have a similar test case, which uses:
tmp_float = (float)strtod("6.0e-44",NULL);
g_string_sprintf(pGStr,"%6.2f\n",tmp_float);
and produces the same crash. In that case, a "%g\n" format string
returns something within precision distance of 6.0e-44. The compiler
(gcc 2.95) accepts that a float can be denormalized, and operates on it
in various ways, but the g_string_sprintf() function does not.
The above is completely legal way to produce the crash, and an
application could well convert a (very small) double to a float and then
later try to print the float in a limited precision output format. That
argues that the correct behavior is indeed "0.00", and nothing else.
I guess the alternative would be to print "nan", but I'd vote for "0.00"
instead.
Eric
_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list