diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-12-10 04:41:46 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-12-10 04:41:46 +0000 |
commit | 66ebe46c7d7bdc586f0f74ebcbb1e60864634364 (patch) | |
tree | ad0339c1fb9eae8aae03028f5283e3219b263f8b /stdlib | |
parent | 5cf1ec52565b19d68c3c0fbd853c0b5de26b27b2 (diff) | |
download | glibc-66ebe46c7d7bdc586f0f74ebcbb1e60864634364.zip glibc-66ebe46c7d7bdc586f0f74ebcbb1e60864634364.tar.gz glibc-66ebe46c7d7bdc586f0f74ebcbb1e60864634364.tar.bz2 |
2004-11-29 Jakub Jelinek <jakub@redhat.com>
* stdlib/strtod_l.c (INTERNAL (__STRTOF)): If densize > 2
and numsize < densize, always shift num up by empty + 1 limbs.
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/strtod_l.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index dce65cb..a656789 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -1442,15 +1442,10 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) if (numsize < densize) { mp_size_t empty = densize - numsize; + register int i; if (bits <= 0) - { - register int i; - for (i = numsize; i > 0; --i) - num[i + empty] = num[i - 1]; - MPN_ZERO (num, empty + 1); - exponent -= empty * BITS_PER_MP_LIMB; - } + exponent -= empty * BITS_PER_MP_LIMB; else { if (bits + empty * BITS_PER_MP_LIMB <= MANT_DIG) @@ -1459,7 +1454,6 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) cannot optimize the `else' case that good and this reflects all currently used FLOAT types and GMP implementations. */ - register int i; #if RETURN_LIMB_SIZE <= 2 assert (empty == 1); __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, @@ -1470,9 +1464,6 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) while (i >= 0) retval[i--] = 0; #endif - for (i = numsize; i > 0; --i) - num[i + empty] = num[i - 1]; - MPN_ZERO (num, empty + 1); } else { @@ -1492,6 +1483,9 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) } bits += empty * BITS_PER_MP_LIMB; } + for (i = numsize; i > 0; --i) + num[i + empty] = num[i - 1]; + MPN_ZERO (num, empty + 1); } else { |