From 707f25dfc0a63d264e9da00368cbab5bd0f6a8c9 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 21 Dec 2011 23:32:10 +0100 Subject: [PATCH] Fix division by denominator with more than two limbs in strtold --- ChangeLog | 6 ++++++ NEWS | 4 ++-- stdlib/strtod_l.c | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58f582c4e3b..024ee2340b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-12-21 Andreas Schwab + + [BZ #13524] + * stdlib/strtod_l.c (____STRTOF_INTERNAL): Clear lowest limb of + numerator after shifting it by one limb. + 2011-12-19 Rafael Ávila de Espíndola * sysdeps/x86_64/fpu/bits/fenv.h (feraiseexcept): Define it only diff --git a/NEWS b/NEWS index a0869ef08a4..50c5852a67d 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2011-12-17 +GNU C Library NEWS -- history of user-visible changes. 2011-12-21 Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc. See the end for copying conditions. @@ -13,7 +13,7 @@ Version 2.15 12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13192, 13268, 13276, 13291, 13335, 13337, 13344, 13358, 13367, 13446, 13472, - 13484, 13506 + 13484, 13506, 13524 * New program pldd to list loaded object of a process Implemented by Ulrich Drepper. diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index b3380fdba31..f24d4de73b9 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -1513,6 +1513,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) assert (numsize == densize); for (i = numsize; i > 0; --i) num[i] = num[i - 1]; + num[0] = 0; } den[densize] = 0; @@ -1557,6 +1558,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) n0 = num[densize] = num[densize - 1]; for (i = densize - 1; i > 0; --i) num[i] = num[i - 1]; + num[0] = 0; got_limb; } -- 2.47.2