This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On Thu, 2007-06-07 13:57:17 -0400, Tor Myklebust <tmyklebu@csclub.uwaterloo.ca> wrote:
> 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?
Where shall this invalid long double come from? The CPU won't generate
it itself. And if you play tricks and printf() a known-bad long double
from inside your application, that app doesn't deserve any better than
crash.
MfG, JBG
--
Jan-Benedict Glaw jbglaw@lug-owl.de +49-172-7608481
Signature of: The course of history shows that as a government grows, liberty
the second : decreases." (Thomas Jefferson)
Attachment:
signature.asc
Description: Digital signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |