From a9b486446b726424252a50491ad5721b1bc4467a Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Sun, 30 Mar 2008 08:07:51 -0600 Subject: [PATCH] strtod touchups. * lib/strtod.c (strtod): Avoid compiler warnings. Reported by Jim Meyering. Signed-off-by: Eric Blake --- ChangeLog | 6 ++++++ lib/strtod.c | 13 +++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d941dd1dc..5225d25d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-03-30 Eric Blake + + strtod touchups. + * lib/strtod.c (strtod): Avoid compiler warnings. + Reported by Jim Meyering. + 2008-03-30 Bruno Haible * lib/unistdio/u-vsprintf.h (EOVERFLOW): Remove fallback. diff --git a/lib/strtod.c b/lib/strtod.c index 0ebbb33d7..a2a4d3db6 100644 --- a/lib/strtod.c +++ b/lib/strtod.c @@ -51,7 +51,8 @@ strtod (const char *nptr, char **endptr) goto noconv; } - s = nptr; + /* Use unsigned char for the ctype routines. */ + s = (unsigned char *) nptr; /* Eat whitespace. */ while (isspace (*s)) @@ -191,11 +192,11 @@ strtod (const char *nptr, char **endptr) /* Get the exponent specified after the `e' or `E'. */ int save = errno; char *end; - long int exp; + long int value; errno = 0; ++s; - exp = strtol (s, &end, 10); + value = strtol ((char *) s, &end, 10); if (errno == ERANGE && num) { /* The exponent overflowed a `long int'. It is probably a safe @@ -203,7 +204,7 @@ strtod (const char *nptr, char **endptr) a `long int' exceeds the limits of a `double'. */ if (endptr != NULL) *endptr = end; - if (exp < 0) + if (value < 0) goto underflow; else goto overflow; @@ -213,8 +214,8 @@ strtod (const char *nptr, char **endptr) the 'e' or 'E', so *ENDPTR will be set there. */ end = (char *) s - 1; errno = save; - s = end; - exponent += exp; + s = (unsigned char *) end; + exponent += value; } if (num == 0.0) -- 2.11.0