diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2012-12-19 10:16:00 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2012-12-19 10:16:00 +0000 |
commit | fb2b6cb86890a59fcfc7085a0b966f30563990af (patch) | |
tree | 77142615ac2c8cf0a41bcbf942022f86bbd9814a /newlib | |
parent | 17ecab12a81003db4362156044a75df35defa227 (diff) | |
download | newlib-fb2b6cb86890a59fcfc7085a0b966f30563990af.zip newlib-fb2b6cb86890a59fcfc7085a0b966f30563990af.tar.gz newlib-fb2b6cb86890a59fcfc7085a0b966f30563990af.tar.bz2 |
* libc/stdlib/strtod.c (_strtod_r): Revert change from 2011-05-16.
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 4 | ||||
-rw-r--r-- | newlib/libc/stdlib/strtod.c | 18 |
2 files changed, 12 insertions, 10 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 62c36c8..f8e2e4e 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,7 @@ +2012-12-19 Corinna Vinschen <vinschen@redhat.com> + + * libc/stdlib/strtod.c (_strtod_r): Revert change from 2011-05-16. + 2012-12-18 Jeff Johnston <jjohnstn@redhat.com> * libc/include/math.h: Remove the log2f macro. diff --git a/newlib/libc/stdlib/strtod.c b/newlib/libc/stdlib/strtod.c index 7e73b12..fe6aac2 100644 --- a/newlib/libc/stdlib/strtod.c +++ b/newlib/libc/stdlib/strtod.c @@ -309,7 +309,8 @@ _DEFUN (_strtod_r, (ptr, s00, se), } nd0 = nd; if (strncmp (s, _localeconv_r (ptr)->decimal_point, - strlen (_localeconv_r (ptr)->decimal_point)) == 0) { + strlen (_localeconv_r (ptr)->decimal_point)) == 0) + { decpt = 1; c = *(s += strlen (_localeconv_r (ptr)->decimal_point)); if (!nd) { @@ -327,28 +328,25 @@ _DEFUN (_strtod_r, (ptr, s00, se), have_dig: nz++; if (c -= '0') { + nf += nz; for(i = 1; i < nz; i++) { - if (nd <= DBL_DIG + 1) { - if (nd + i < 10) + if (nd++ <= DBL_DIG + 1) { + if (nd < 10) y *= 10; else z *= 10; } } - if (nd <= DBL_DIG + 1) { - if (nd + i < 10) + if (nd++ <= DBL_DIG + 1) { + if (nd < 10) y = 10*y + c; else z = 10*z + c; } - if (nd <= DBL_DIG + 1) { - nf += nz; - nd += nz; - } nz = 0; + } } } - } dig_done: e = 0; if (c == 'e' || c == 'E') { |