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