strtod touchups.
authorEric Blake <ebb9@byu.net>
Sun, 30 Mar 2008 14:07:51 +0000 (08:07 -0600)
committerEric Blake <ebb9@byu.net>
Sun, 30 Mar 2008 14:11:18 +0000 (08:11 -0600)
* lib/strtod.c (strtod): Avoid compiler warnings.
Reported by Jim Meyering.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
lib/strtod.c

index d941dd1..5225d25 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-03-30  Eric Blake  <ebb9@byu.net>
+
+       strtod touchups.
+       * lib/strtod.c (strtod): Avoid compiler warnings.
+       Reported by Jim Meyering.
+
 2008-03-30  Bruno Haible  <bruno@clisp.org>
 
        * lib/unistdio/u-vsprintf.h (EOVERFLOW): Remove fallback.
index 0ebbb33..a2a4d3d 100644 (file)
@@ -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)