[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: build failure (alpha-current): floating point exception 8
On Tue, Mar 03, 2009 at 11:07:54AM -0500, Christos Zoulas wrote:
> On Mar 3, 3:13pm, njoly%pasteur.fr@localhost (Nicolas Joly) wrote:
> -- Subject: Re: build failure (alpha-current): floating point exception 8
> | Are they portable enough for host tool ? My Tru64 do miss isinf().
> Ouch. These are IEEE Std 1003.1-2001 functions, and are extensions
> to the ISO C standard. Strtod is supposed so return HUGE_VAL if the
> value is going to overflow. HUGE_VAL in term is defined to be
> infinity in our implementation, but is that guaranteed to be that
> way? I am not sure. Anyway, it seems that inf == inf traps on
> non-ieee hardware, so we need to take care of it somehow. perhaps
> using memcmp()? I really don't want to longjmp out of a signal
> handler to solve this.
I've been thinking a little more about this, and the attached patch
should do the trick, at least, for the host tool part. If this ok, we
can handle INF the same way ...
Biological Software and Databanks.
Institut Pasteur, Paris.
RCS file: /pub/NetBSD-CVS/src/dist/nawk/lib.c,v
retrieving revision 1.15
diff -u -p -r1.15 lib.c
--- dist/nawk/lib.c 1 Mar 2009 23:30:52 -0000 1.15
+++ dist/nawk/lib.c 10 Mar 2009 13:10:23 -0000
@@ -710,7 +710,9 @@ int is_number(const char *s)
errno = 0;
r = strtod(s, &ep);
- if (ep == s || r == HUGE_VAL || errno == ERANGE)
+ if (ep == s || errno == ERANGE)
+ return 0;
+ if (ep - s >= 3 && strncasecmp(ep - 3, "nan", 3) == 0)
while (*ep == ' ' || *ep == '\t' || *ep == '\n')
Main Index |
Thread Index |