X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fstrtod.c;fp=lib%2Fstrtod.c;h=64b62ffd21c180a7fb8f79a10fd7a9eba60f9cd8;hb=b88cc81f2204d45dc587eeda1f887bfe27987ef0;hp=94eb8175e7bbea86db0cc70b110245ae8efacd3c;hpb=91fd3b18b755b77c4bb3f7556ddedb055c16c834;p=gnulib.git diff --git a/lib/strtod.c b/lib/strtod.c index 94eb8175e..64b62ffd2 100644 --- a/lib/strtod.c +++ b/lib/strtod.c @@ -200,7 +200,8 @@ strtod (const char *nptr, char **endptr) double num; const char *s = nptr; - char *end; + const char *end; + char *endbuf; /* Eat whitespace. */ while (locale_isspace (*s)) @@ -211,7 +212,8 @@ strtod (const char *nptr, char **endptr) if (*s == '-' || *s == '+') ++s; - num = underlying_strtod (s, &end); + num = underlying_strtod (s, &endbuf); + end = endbuf; if (c_isdigit (s[*s == '.'])) { @@ -224,7 +226,10 @@ strtod (const char *nptr, char **endptr) if (! c_isxdigit (s[2 + (s[2] == '.')])) end = s + 1; else if (end <= s + 2) - num = parse_number (s + 2, 16, 2, 4, 'p', &end); + { + num = parse_number (s + 2, 16, 2, 4, 'p', &endbuf); + end = endbuf; + } else { const char *p = s + 2;