glibc segfault on "special" long double values is _ok_!?
Tor Myklebust
tmyklebu@csclub.uwaterloo.ca
Thu Jun 7 17:57:00 GMT 2007
On Thu, 7 Jun 2007, Jan-Benedict Glaw wrote:
> There's a difference in
>
> void send_float (float foo, int fd) {
> write (fd, &foo, sizeof (float));
> }
>
> and
>
> void send_float (float foo, int fd) {
> char buf[100];
> snprintf (buf, sizeof (buf), "%f", foo);
> write (fd, buf, strlen (buf));
> }
>
> The second variant surely burns more CPU cycles, even on both sides,
> but it'll easily work even for different architectures. (I just think
> about VAX where the CPU FP support is made up of four non-IEEE float
> types...)
And the second variant can segfault if you replace 'float' by 'long
double' (changing the format string appropriately) and you feed it
something bad. Why is this a good thing?
More information about the Libc-alpha
mailing list