Explicitly cast digits (Py_ssize_t) to double to fix the following
false-alarm warning from Coverity:
"fsize_z = digits * log_base_BASE[base] + 1;"
CID
1424951: Incorrect expression (UNINTENDED_INTEGER_DIVISION)
Dividing integer expressions "9223372036854775783UL" and "4UL", and
then converting the integer quotient to type "double". Any remainder,
or fractional part of the quotient, is ignored.
digit beyond the first.
***/
twodigits c; /* current input character */
- double fsize_z;
Py_ssize_t size_z;
Py_ssize_t digits = 0;
int i;
* need to initialize z->ob_digit -- no slot is read up before
* being stored into.
*/
- fsize_z = digits * log_base_BASE[base] + 1;
- if (fsize_z > MAX_LONG_DIGITS) {
+ double fsize_z = (double)digits * log_base_BASE[base] + 1.0;
+ if (fsize_z > (double)MAX_LONG_DIGITS) {
/* The same exception as in _PyLong_New(). */
PyErr_SetString(PyExc_OverflowError,
"too many digits in integer");