diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-03-24 22:05:34 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-03-24 22:05:34 +0000 |
commit | 9ce0ecbe384f09030cd5d014e17179725e778fa6 (patch) | |
tree | fe311a312021ab640083716643ac2c891d54bb10 /stdlib/strtod_l.c | |
parent | 6abbc50157efd0a8cec43827774307c9dc2a6493 (diff) | |
download | glibc-9ce0ecbe384f09030cd5d014e17179725e778fa6.tar.gz glibc-9ce0ecbe384f09030cd5d014e17179725e778fa6.tar.xz glibc-9ce0ecbe384f09030cd5d014e17179725e778fa6.zip |
Update.
2004-03-24 Jakub Jelinek <jakub@redhat.com> * stdlib/strtod_l.c (INTERNAL (__STRTOF)): Clear the rest of retval, not just one limb if RETURN_LIMB_SIZE > 2. Fix shifting up if RETURN_LIMB_SIZE > 2. * stdio-common/printf_fp.c (__printf_fp): For IEEE quad long double on 32-bit architectures reserve 8 limbs instead of 4.
Diffstat (limited to 'stdlib/strtod_l.c')
-rw-r--r-- | stdlib/strtod_l.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index 89d30b435b..9eca802a10 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -1155,7 +1155,11 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) memcpy (retval, num, numsize * sizeof (mp_limb_t)); #if RETURN_LIMB_SIZE > 1 if (numsize < RETURN_LIMB_SIZE) +# if RETURN_LIMB_SIZE == 2 retval[numsize] = 0; +# else + MPN_ZERO (retval + numsize, RETURN_LIMB_SIZE - numsize); +# endif #endif } @@ -1461,8 +1465,10 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc) __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, BITS_PER_MP_LIMB, 0); #else - for (i = RETURN_LIMB_SIZE; i > empty; --i) + for (i = RETURN_LIMB_SIZE - 1; i >= empty; --i) retval[i] = retval[i - empty]; + while (i >= 0) + retval[i--] = 0; #endif for (i = numsize; i > 0; --i) num[i + empty] = num[i - 1]; |