summary refs log tree commit diff
path: root/stdio-common/printf_fp.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-03-24 22:05:34 +0000
committerUlrich Drepper <drepper@redhat.com>2004-03-24 22:05:34 +0000
commit9ce0ecbe384f09030cd5d014e17179725e778fa6 (patch)
treefe311a312021ab640083716643ac2c891d54bb10 /stdio-common/printf_fp.c
parent6abbc50157efd0a8cec43827774307c9dc2a6493 (diff)
downloadglibc-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 'stdio-common/printf_fp.c')
-rw-r--r--stdio-common/printf_fp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 62867e75f2..ed225e05a6 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -430,7 +430,9 @@ __printf_fp (FILE *fp,
      would be really big it could lead to memory problems.  */
   {
     mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1)
-			     / BITS_PER_MP_LIMB + 4) * sizeof (mp_limb_t);
+			     / BITS_PER_MP_LIMB
+			     + (LDBL_MANT_DIG / BITS_PER_MP_LIMB > 2 ? 8 : 4))
+			    * sizeof (mp_limb_t);
     frac = (mp_limb_t *) alloca (bignum_size);
     tmp = (mp_limb_t *) alloca (bignum_size);
     scale = (mp_limb_t *) alloca (bignum_size);