bpo-40941: Fix fold_tuple_on_constants() compiler warnings (GH-22378)

Add explicit casts to fix compiler warnings in
fold_tuple_on_constants().

The limit of constants per code is now INT_MAX, rather than UINT_MAX.
This commit is contained in:
Victor Stinner 2020-09-23 14:06:55 +02:00 committed by GitHub
parent 7f413a5d95
commit 71f2ff4ccf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 4 deletions

View File

@ -6100,13 +6100,11 @@ fold_tuple_on_constants(struct instr *inst,
PyTuple_SET_ITEM(newconst, i, constant); PyTuple_SET_ITEM(newconst, i, constant);
} }
Py_ssize_t index = PyList_GET_SIZE(consts); Py_ssize_t index = PyList_GET_SIZE(consts);
#if SIZEOF_SIZE_T > SIZEOF_INT if ((size_t)index >= (size_t)INT_MAX - 1) {
if ((size_t)index >= UINT_MAX - 1) {
Py_DECREF(newconst); Py_DECREF(newconst);
PyErr_SetString(PyExc_OverflowError, "too many constants"); PyErr_SetString(PyExc_OverflowError, "too many constants");
return -1; return -1;
} }
#endif
if (PyList_Append(consts, newconst)) { if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst); Py_DECREF(newconst);
return -1; return -1;
@ -6116,7 +6114,7 @@ fold_tuple_on_constants(struct instr *inst,
inst[i].i_opcode = NOP; inst[i].i_opcode = NOP;
} }
inst[n].i_opcode = LOAD_CONST; inst[n].i_opcode = LOAD_CONST;
inst[n].i_oparg = index; inst[n].i_oparg = (int)index;
return 0; return 0;
} }