bpo-40455: Remove gcc10 warning about x_digits (#19852)

* bpo-40455: Remove gcc10 warning about x_digits

* bpo-40455: nit

* bpo-40455: fix logic error
This commit is contained in:
Dong-hee Na 2020-05-04 22:32:42 +09:00 committed by GitHub
parent 5e8ffe1477
commit b88cd585d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 4 deletions

View File

@ -2852,7 +2852,8 @@ _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e)
{ {
Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size; Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size;
/* See below for why x_digits is always large enough. */ /* See below for why x_digits is always large enough. */
digit rem, x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT]; digit rem;
digit x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT] = {0,};
double dx; double dx;
/* Correction term for round-half-to-even rounding. For a digit x, /* Correction term for round-half-to-even rounding. For a digit x,
"x + half_even_correction[x & 7]" gives x rounded to the nearest "x + half_even_correction[x & 7]" gives x rounded to the nearest
@ -2902,9 +2903,7 @@ _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e)
if (a_bits <= DBL_MANT_DIG + 2) { if (a_bits <= DBL_MANT_DIG + 2) {
shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT; shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT;
shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT; shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT;
x_size = 0; x_size = shift_digits;
while (x_size < shift_digits)
x_digits[x_size++] = 0;
rem = v_lshift(x_digits + x_size, a->ob_digit, a_size, rem = v_lshift(x_digits + x_size, a->ob_digit, a_size,
(int)shift_bits); (int)shift_bits);
x_size += a_size; x_size += a_size;