mirror of
https://github.com/python/cpython.git
synced 2026-05-06 04:37:33 -04:00
gh-126835: Fix _PY_IS_SMALL_INT() macro (#146631)
This commit is contained in:
@@ -64,7 +64,8 @@ PyAPI_FUNC(void) _PyLong_ExactDealloc(PyObject *self);
|
||||
# error "_PY_NSMALLPOSINTS must be greater than or equal to 257"
|
||||
#endif
|
||||
|
||||
#define _PY_IS_SMALL_INT(val) ((val) >= 0 && (val) < 256 && (val) < _PY_NSMALLPOSINTS)
|
||||
#define _PY_IS_SMALL_INT(val) \
|
||||
(-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
|
||||
|
||||
// Return a reference to the immortal zero singleton.
|
||||
// The function cannot return NULL.
|
||||
|
||||
@@ -26,7 +26,7 @@ class int "PyObject *" "&PyLong_Type"
|
||||
|
||||
#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
|
||||
|
||||
#define IS_SMALL_INT(ival) (-_PY_NSMALLNEGINTS <= (ival) && (ival) < _PY_NSMALLPOSINTS)
|
||||
#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
|
||||
#define IS_SMALL_UINT(ival) ((ival) < _PY_NSMALLPOSINTS)
|
||||
|
||||
#define _MAX_STR_DIGITS_ERROR_FMT_TO_INT "Exceeds the limit (%d digits) for integer string conversion: value has %zd digits; use sys.set_int_max_str_digits() to increase the limit"
|
||||
|
||||
+1
-1
@@ -1411,7 +1411,7 @@ maybe_instr_make_load_smallint(cfg_instr *instr, PyObject *newconst,
|
||||
if (val == -1 && PyErr_Occurred()) {
|
||||
return -1;
|
||||
}
|
||||
if (!overflow && _PY_IS_SMALL_INT(val)) {
|
||||
if (!overflow && _PY_IS_SMALL_INT(val) && 0 <= val && val <= 255) {
|
||||
assert(_Py_IsImmortal(newconst));
|
||||
INSTR_SET_OP1(instr, LOAD_SMALL_INT, (int)val);
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user