From: Bruno Haible Date: Fri, 18 May 2007 23:35:38 +0000 (+0000) Subject: Fix small bug in 'divide' function. X-Git-Tag: cvs-readonly~383 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=7f5e623b09aeb3ea32039bb45bcce22a598615d5;p=gnulib.git Fix small bug in 'divide' function. --- diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index fdca88685..f67211b95 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -623,19 +623,19 @@ divide (mpn_t a, mpn_t b, mpn_t *q) goto increment_q; { size_t i; - for (i = b_len; i > 0; ) + for (i = b_len;;) { + mp_limb_t r_i = + (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) + | (i < r_len ? r_ptr[i] << 1 : 0); + mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); + if (r_i > b_i) + goto increment_q; + if (r_i < b_i) + goto keep_q; + if (i == 0) + break; i--; - { - mp_limb_t r_i = - (i + 1 < r_len ? r_ptr[i + 1] >> (GMP_LIMB_BITS - 1) : 0) - | (i < r_len ? r_ptr[i] << 1 : 0); - mp_limb_t b_i = b_ptr[i]; - if (r_i > b_i) - goto increment_q; - if (r_i < b_i) - goto keep_q; - } } } if (q_len > 0 && ((q_ptr[0] & 1) != 0))