diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-07-31 06:09:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-31 06:09:36 (GMT) |
commit | 48c8bf21f97aeb124dbd48bf2bdec1ab4ebc5202 (patch) | |
tree | 6678ae7f56e368ef192b8e0f5988f7c317dbb246 | |
parent | dc9039da239ee572eaaf56e4a026be1fc4d74e24 (diff) | |
download | cpython-48c8bf21f97aeb124dbd48bf2bdec1ab4ebc5202.zip cpython-48c8bf21f97aeb124dbd48bf2bdec1ab4ebc5202.tar.gz cpython-48c8bf21f97aeb124dbd48bf2bdec1ab4ebc5202.tar.bz2 |
[2.7] bpo-34234: Use _PyAnyInt_Check() and _PyAnyInt_CheckExact(). (GH-8479)
36 files changed, 75 insertions, 81 deletions
diff --git a/Include/intobject.h b/Include/intobject.h index 59d0616..d198574 100644 --- a/Include/intobject.h +++ b/Include/intobject.h @@ -31,6 +31,9 @@ PyAPI_DATA(PyTypeObject) PyInt_Type; PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_INT_SUBCLASS) #define PyInt_CheckExact(op) (Py_TYPE(op) == &PyInt_Type) +#define _PyAnyInt_Check(op) (PyInt_Check(op) || PyLong_Check(op)) +#define _PyAnyInt_CheckExact(op) (PyInt_CheckExact(op) || PyLong_CheckExact(op)) + PyAPI_FUNC(PyObject *) PyInt_FromString(char*, char**, int); #ifdef Py_USING_UNICODE PyAPI_FUNC(PyObject *) PyInt_FromUnicode(Py_UNICODE*, Py_ssize_t, int); diff --git a/Modules/_csv.c b/Modules/_csv.c index c39c0f1..ea7d089 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -224,7 +224,7 @@ _set_int(const char *name, int *target, PyObject *src, int dflt) if (src == NULL) *target = dflt; else { - if (!PyInt_Check(src) && !PyLong_Check(src)) { + if (!_PyAnyInt_Check(src)) { PyErr_Format(PyExc_TypeError, "\"%s\" must be an integer", name); return -1; @@ -1452,7 +1452,7 @@ csv_field_size_limit(PyObject *module, PyObject *args) if (!PyArg_UnpackTuple(args, "field_size_limit", 0, 1, &new_limit)) return NULL; if (new_limit != NULL) { - if (!PyInt_Check(new_limit) && !PyLong_Check(new_limit)) { + if (!_PyAnyInt_Check(new_limit)) { PyErr_Format(PyExc_TypeError, "limit must be an integer"); return NULL; diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 25740ed..fabbdf1 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -547,7 +547,7 @@ static PyObject * CDataType_from_address(PyObject *type, PyObject *value) { void *buf; - if (!PyInt_Check(value) && !PyLong_Check(value)) { + if (!_PyAnyInt_Check(value)) { PyErr_SetString(PyExc_TypeError, "integer expected"); return NULL; @@ -691,7 +691,7 @@ CDataType_in_dll(PyObject *type, PyObject *args) obj = PyObject_GetAttrString(dll, "_handle"); if (!obj) return NULL; - if (!PyInt_Check(obj) && !PyLong_Check(obj)) { + if (!_PyAnyInt_Check(obj)) { PyErr_SetString(PyExc_TypeError, "the _handle attribute of the second argument must be an integer"); Py_DECREF(obj); @@ -1779,7 +1779,7 @@ c_void_p_from_param(PyObject *type, PyObject *value) } /* Should probably allow buffer interface as well */ /* int, long */ - if (PyInt_Check(value) || PyLong_Check(value)) { + if (_PyAnyInt_Check(value)) { PyCArgObject *parg; struct fielddesc *fd = _ctypes_get_fielddesc("P"); @@ -3419,7 +3419,7 @@ static int _get_name(PyObject *obj, char **pname) { #ifdef MS_WIN32 - if (PyInt_Check(obj) || PyLong_Check(obj)) { + if (_PyAnyInt_Check(obj)) { /* We have to use MAKEINTRESOURCEA for Windows CE. Works on Windows as well, of course. */ @@ -3469,7 +3469,7 @@ PyCFuncPtr_FromDll(PyTypeObject *type, PyObject *args, PyObject *kwds) Py_DECREF(ftuple); return NULL; } - if (!PyInt_Check(obj) && !PyLong_Check(obj)) { + if (!_PyAnyInt_Check(obj)) { PyErr_SetString(PyExc_TypeError, "the _handle attribute of the second argument must be an integer"); Py_DECREF(ftuple); @@ -3600,8 +3600,7 @@ PyCFuncPtr_new(PyTypeObject *type, PyObject *args, PyObject *kwds) #endif if (1 == PyTuple_GET_SIZE(args) - && (PyInt_Check(PyTuple_GET_ITEM(args, 0)) - || PyLong_Check(PyTuple_GET_ITEM(args, 0)))) { + && _PyAnyInt_Check(PyTuple_GET_ITEM(args, 0))) { CDataObject *ob; void *ptr = PyLong_AsVoidPtr(PyTuple_GET_ITEM(args, 0)); if (ptr == NULL && PyErr_Occurred()) diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index 6f632d0..46f041b 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -1361,7 +1361,7 @@ z_set(void *ptr, PyObject *value, Py_ssize_t size) return NULL; *(char **)ptr = PyString_AS_STRING(str); return str; - } else if (PyInt_Check(value) || PyLong_Check(value)) { + } else if (_PyAnyInt_Check(value)) { #if SIZEOF_VOID_P == SIZEOF_LONG_LONG *(char **)ptr = (char *)PyInt_AsUnsignedLongLongMask(value); #else @@ -1410,7 +1410,7 @@ Z_set(void *ptr, PyObject *value, Py_ssize_t size) _ctypes_conversion_errors); if (!value) return NULL; - } else if (PyInt_Check(value) || PyLong_Check(value)) { + } else if (_PyAnyInt_Check(value)) { #if SIZEOF_VOID_P == SIZEOF_LONG_LONG *(wchar_t **)ptr = (wchar_t *)PyInt_AsUnsignedLongLongMask(value); #else @@ -1565,7 +1565,7 @@ P_set(void *ptr, PyObject *value, Py_ssize_t size) _RET(value); } - if (!PyInt_Check(value) && !PyLong_Check(value)) { + if (!_PyAnyInt_Check(value)) { PyErr_SetString(PyExc_TypeError, "cannot be converted to pointer"); return NULL; diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 935712a..0ec4ee1 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -194,7 +194,7 @@ PyCursesCheckERR(int code, char *fname) static int PyCurses_ConvertToChtype(PyObject *obj, chtype *ch) { - if (PyInt_Check(obj) || PyLong_Check(obj)) { + if (_PyAnyInt_Check(obj)) { *ch = (chtype) PyInt_AsLong(obj); if (*ch == (chtype) -1 && PyErr_Occurred()) return 0; @@ -2603,7 +2603,7 @@ PyCurses_UnCtrl(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args,"O;ch or int",&temp)) return NULL; - if (PyInt_Check(temp) || PyLong_Check(temp)) { + if (_PyAnyInt_Check(temp)) { ch = (chtype) PyInt_AsLong(temp); if (ch == (chtype) -1 && PyErr_Occurred()) return NULL; @@ -2628,7 +2628,7 @@ PyCurses_UngetCh(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args,"O;ch or int",&temp)) return NULL; - if (PyInt_Check(temp) || PyLong_Check(temp)) { + if (_PyAnyInt_Check(temp)) { ch = (int) PyInt_AsLong(temp); if (ch == -1 && PyErr_Occurred()) return NULL; diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 1d316a1..f7f992d 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -1347,7 +1347,7 @@ element_subscr(PyObject* self_, PyObject* item) ElementObject* self = (ElementObject*) self_; #if (PY_VERSION_HEX < 0x02050000) - if (PyInt_Check(item) || PyLong_Check(item)) { + if (_PyAnyInt_Check(item)) { long i = PyInt_AsLong(item); #else if (PyIndex_Check(item)) { @@ -1404,7 +1404,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value) ElementObject* self = (ElementObject*) self_; #if (PY_VERSION_HEX < 0x02050000) - if (PyInt_Check(item) || PyLong_Check(item)) { + if (_PyAnyInt_Check(item)) { long i = PyInt_AsLong(item); #else if (PyIndex_Check(item)) { diff --git a/Modules/_json.c b/Modules/_json.c index 39ec467..28c0b3f 100644 --- a/Modules/_json.c +++ b/Modules/_json.c @@ -1981,7 +1981,7 @@ encoder_listencode_obj(PyEncoderObject *s, PyObject *rval, PyObject *obj, Py_ssi return -1; return _steal_list_append(rval, encoded); } - else if (PyInt_Check(obj) || PyLong_Check(obj)) { + else if (_PyAnyInt_Check(obj)) { PyObject *encoded = PyObject_Str(obj); if (encoded == NULL) return -1; @@ -2131,7 +2131,7 @@ encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ss if (kstr == NULL) goto bail; } - else if (PyInt_Check(key) || PyLong_Check(key)) { + else if (_PyAnyInt_Check(key)) { kstr = PyObject_Str(key); if (kstr == NULL) goto bail; diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c index 2e49db6..2c0daef 100644 --- a/Modules/_randommodule.c +++ b/Modules/_randommodule.c @@ -415,7 +415,7 @@ random_jumpahead(RandomObject *self, PyObject *n) PyObject *remobj; unsigned long *mt, tmp, nonzero; - if (!PyInt_Check(n) && !PyLong_Check(n)) { + if (!_PyAnyInt_Check(n)) { PyErr_Format(PyExc_TypeError, "jumpahead requires an " "integer, not '%s'", Py_TYPE(n)->tp_name); diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 5d6263c..ec60095 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -205,7 +205,7 @@ static int _need_adapt(PyObject* obj) return 1; } - if (PyInt_CheckExact(obj) || PyLong_CheckExact(obj) + if (_PyAnyInt_CheckExact(obj) || PyFloat_CheckExact(obj) || PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || PyBuffer_Check(obj)) { return 0; diff --git a/Modules/_sre.c b/Modules/_sre.c index efef8f5..081a1aa 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -3327,7 +3327,7 @@ match_getindex(MatchObject* self, PyObject* index) { Py_ssize_t i; - if (PyInt_Check(index) || PyLong_Check(index)) + if (_PyAnyInt_Check(index)) return PyInt_AsSsize_t(index); i = -1; @@ -3335,7 +3335,7 @@ match_getindex(MatchObject* self, PyObject* index) if (self->pattern->groupindex) { index = PyObject_GetItem(self->pattern->groupindex, index); if (index) { - if (PyInt_Check(index) || PyLong_Check(index)) + if (_PyAnyInt_Check(index)) i = PyInt_AsSsize_t(index); Py_DECREF(index); } else diff --git a/Modules/_struct.c b/Modules/_struct.c index d83d57f..8b97672 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -110,7 +110,7 @@ get_pylong(PyObject *v) PyObject *r, *w; int converted = 0; assert(v != NULL); - if (!PyInt_Check(v) && !PyLong_Check(v)) { + if (!_PyAnyInt_Check(v)) { PyNumberMethods *m; /* Not an integer; first try to use __index__ to convert to an integer. If the __index__ method @@ -150,7 +150,7 @@ get_pylong(PyObject *v) v = m->nb_int(v); if (v == NULL) return NULL; - if (!PyInt_Check(v) && !PyLong_Check(v)) { + if (!_PyAnyInt_Check(v)) { PyErr_SetString(PyExc_TypeError, "__int__ method returned " "non-integer"); @@ -169,7 +169,7 @@ get_pylong(PyObject *v) /* Ensure we own a reference to v. */ Py_INCREF(v); - assert(PyInt_Check(v) || PyLong_Check(v)); + assert(_PyAnyInt_Check(v)); if (PyInt_Check(v)) { r = PyLong_FromLong(PyInt_AS_LONG(v)); Py_DECREF(v); diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 444c268..c71ffd0 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -2107,7 +2107,7 @@ Tkapp_GetInt(PyObject *self, PyObject *args) if (PyTuple_Size(args) == 1) { PyObject* o = PyTuple_GetItem(args, 0); - if (PyInt_Check(o) || PyLong_Check(o)) { + if (_PyAnyInt_Check(o)) { Py_INCREF(o); return o; } diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 8901b42..4b482bf 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -310,8 +310,7 @@ multibytecodec_encerror(MultibyteCodec *codec, if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 || !PyUnicode_Check((tobj = PyTuple_GET_ITEM(retobj, 0))) || - !(PyInt_Check(PyTuple_GET_ITEM(retobj, 1)) || - PyLong_Check(PyTuple_GET_ITEM(retobj, 1)))) { + !_PyAnyInt_Check(PyTuple_GET_ITEM(retobj, 1))) { PyErr_SetString(PyExc_TypeError, "encoding error handler must return " "(unicode, int) tuple"); @@ -430,8 +429,7 @@ multibytecodec_decerror(MultibyteCodec *codec, if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 || !PyUnicode_Check((retuni = PyTuple_GET_ITEM(retobj, 0))) || - !(PyInt_Check(PyTuple_GET_ITEM(retobj, 1)) || - PyLong_Check(PyTuple_GET_ITEM(retobj, 1)))) { + !_PyAnyInt_Check(PyTuple_GET_ITEM(retobj, 1))) { PyErr_SetString(PyExc_TypeError, "decoding error handler must return " "(unicode, int) tuple"); diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c index e818c5c..c0b7102 100644 --- a/Modules/datetimemodule.c +++ b/Modules/datetimemodule.c @@ -1537,7 +1537,7 @@ delta_to_microseconds(PyDateTime_Delta *self) if (x2 == NULL) goto Done; result = PyNumber_Add(x1, x2); - assert(result == NULL || PyInt_CheckExact(result) || PyLong_CheckExact(result)); + assert(result == NULL || _PyAnyInt_CheckExact(result)); Done: Py_XDECREF(x1); @@ -1560,7 +1560,7 @@ microseconds_to_delta_ex(PyObject *pyus, PyTypeObject *type) PyObject *num = NULL; PyObject *result = NULL; - assert(PyInt_CheckExact(pyus) || PyLong_CheckExact(pyus)); + assert(_PyAnyInt_CheckExact(pyus)); tuple = PyNumber_Divmod(pyus, us_per_second); if (tuple == NULL) goto Done; @@ -1803,11 +1803,11 @@ delta_multiply(PyObject *left, PyObject *right) if (PyDelta_Check(left)) { /* delta * ??? */ - if (PyInt_Check(right) || PyLong_Check(right)) + if (_PyAnyInt_Check(right)) result = multiply_int_timedelta(right, (PyDateTime_Delta *) left); } - else if (PyInt_Check(left) || PyLong_Check(left)) + else if (_PyAnyInt_Check(left)) result = multiply_int_timedelta(left, (PyDateTime_Delta *) right); @@ -1823,7 +1823,7 @@ delta_divide(PyObject *left, PyObject *right) if (PyDelta_Check(left)) { /* delta * ??? */ - if (PyInt_Check(right) || PyLong_Check(right)) + if (_PyAnyInt_Check(right)) result = divide_timedelta_int( (PyDateTime_Delta *)left, right); @@ -1852,14 +1852,14 @@ accum(const char* tag, PyObject *sofar, PyObject *num, PyObject *factor, assert(num != NULL); - if (PyInt_Check(num) || PyLong_Check(num)) { + if (_PyAnyInt_Check(num)) { prod = PyNumber_Multiply(factor, num); if (prod == NULL) return NULL; - assert(PyInt_CheckExact(prod) || PyLong_CheckExact(prod)); + assert(_PyAnyInt_CheckExact(prod)); sum = PyNumber_Add(sofar, prod); Py_DECREF(prod); - assert(sum == NULL || PyInt_CheckExact(sum) || PyLong_CheckExact(sum)); + assert(sum == NULL || _PyAnyInt_CheckExact(sum)); return sum; } @@ -1902,7 +1902,7 @@ accum(const char* tag, PyObject *sofar, PyObject *num, PyObject *factor, * fractional part requires float arithmetic, and may * lose a little info. */ - assert(PyInt_CheckExact(factor) || PyLong_CheckExact(factor)); + assert(_PyAnyInt_CheckExact(factor)); if (PyInt_Check(factor)) dnum = (double)PyInt_AsLong(factor); else @@ -1920,7 +1920,7 @@ accum(const char* tag, PyObject *sofar, PyObject *num, PyObject *factor, Py_DECREF(sum); Py_DECREF(x); *leftover += fracpart; - assert(y == NULL || PyInt_CheckExact(y) || PyLong_CheckExact(y)); + assert(y == NULL || _PyAnyInt_CheckExact(y)); return y; } diff --git a/Modules/dlmodule.c b/Modules/dlmodule.c index 7a6686e..3f15048 100644 --- a/Modules/dlmodule.c +++ b/Modules/dlmodule.c @@ -107,7 +107,7 @@ dl_call(dlobject *xp, PyObject *args) } for (i = 1; i < n; i++) { PyObject *v = PyTuple_GetItem(args, i); - if (PyInt_Check(v) || PyLong_Check(v)) { + if (_PyAnyInt_Check(v)) { alist[i-1] = PyInt_AsLong(v); if (alist[i-1] == -1 && PyErr_Occurred()) return NULL; diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 01ed36b..67354a7 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -1188,7 +1188,7 @@ math_ldexp(PyObject *self, PyObject *args) if (! PyArg_ParseTuple(args, "dO:ldexp", &x, &oexp)) return NULL; - if (PyLong_Check(oexp) || PyInt_Check(oexp)) { + if (_PyAnyInt_Check(oexp)) { /* on overflow, replace exponent with either LONG_MAX or LONG_MIN, depending on the sign. */ exp = PyLong_AsLongAndOverflow(oexp, &overflow); diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 2baf920..7a1a694 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -6121,7 +6121,7 @@ posix_setgroups(PyObject *self, PyObject *groups) elem = PySequence_GetItem(groups, i); if (!elem) return NULL; - if (!PyInt_Check(elem) && !PyLong_Check(elem)) { + if (!_PyAnyInt_Check(elem)) { PyErr_SetString(PyExc_TypeError, "groups must be integers"); Py_DECREF(elem); diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 8d36705..634c1b9 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -4194,7 +4194,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args) "getaddrinfo() argument 1 must be string or None"); return NULL; } - if (PyInt_Check(pobj) || PyLong_Check(pobj)) { + if (_PyAnyInt_Check(pobj)) { long value = PyLong_AsLong(pobj); if (value == -1 && PyErr_Occurred()) return NULL; diff --git a/Modules/svmodule.c b/Modules/svmodule.c index 42c49c8..14f236c 100644 --- a/Modules/svmodule.c +++ b/Modules/svmodule.c @@ -686,7 +686,7 @@ sv_LoadMap(svobject *self, PyObject *args) if (!cell) goto finally; - if (!PyInt_Check(cell) && !PyLong_Check(cell)) { + if (!_PyAnyInt_Check(cell)) { PyErr_BadArgument(); goto finally; } @@ -757,7 +757,7 @@ doParams(svobject *self, PyObject *args, if (!v) goto finally; - if (!PyInt_Check(v) && !PyLong_Check(v)) { + if (!_PyAnyInt_Check(v)) { PyErr_BadArgument(); goto finally; } diff --git a/Modules/termios.c b/Modules/termios.c index 9d4d780..e26e714 100644 --- a/Modules/termios.c +++ b/Modules/termios.c @@ -185,7 +185,7 @@ termios_tcsetattr(PyObject *self, PyObject *args) if (PyString_Check(v) && PyString_Size(v) == 1) mode.c_cc[i] = (cc_t) * PyString_AsString(v); - else if (PyInt_Check(v) || PyLong_Check(v)) { + else if (_PyAnyInt_Check(v)) { mode.c_cc[i] = (cc_t) PyInt_AsLong(v); if (mode.c_cc[i] == (cc_t) -1 && PyErr_Occurred()) return NULL; diff --git a/Objects/abstract.c b/Objects/abstract.c index aa92ea9..75c1a10 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -1492,14 +1492,13 @@ PyNumber_Index(PyObject *item) PyObject *result = NULL; if (item == NULL) return null_error(); - if (PyInt_Check(item) || PyLong_Check(item)) { + if (_PyAnyInt_Check(item)) { Py_INCREF(item); return item; } if (PyIndex_Check(item)) { result = item->ob_type->tp_as_number->nb_index(item); - if (result && - !PyInt_Check(result) && !PyLong_Check(result)) { + if (result && !_PyAnyInt_Check(result)) { PyErr_Format(PyExc_TypeError, "__index__ returned non-(int,long) " \ "(type %.200s)", @@ -1574,8 +1573,7 @@ _PyNumber_ConvertIntegralToInt(PyObject *integral, const char* error_format) return NULL; } - if (integral && (!PyInt_Check(integral) && - !PyLong_Check(integral))) { + if (integral && !_PyAnyInt_Check(integral)) { /* Don't go through tp_as_number->nb_int to avoid hitting the classic class fallback to __trunc__. */ PyObject *int_func = PyObject_GetAttr(integral, int_name); @@ -1586,8 +1584,7 @@ _PyNumber_ConvertIntegralToInt(PyObject *integral, const char* error_format) Py_DECREF(integral); integral = PyEval_CallObject(int_func, NULL); Py_DECREF(int_func); - if (integral && (!PyInt_Check(integral) && - !PyLong_Check(integral))) { + if (integral && !_PyAnyInt_Check(integral)) { goto non_integral_error; } } @@ -1632,7 +1629,7 @@ PyNumber_Int(PyObject *o) if (m && m->nb_int) { /* This should include subclasses of int */ /* Classic classes always take this branch. */ PyObject *res = m->nb_int(o); - if (res && (!PyInt_Check(res) && !PyLong_Check(res))) { + if (res && !_PyAnyInt_Check(res)) { PyErr_Format(PyExc_TypeError, "__int__ returned non-int (type %.200s)", res->ob_type->tp_name); diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 04c2506..c178d9e 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -35,7 +35,7 @@ _getbytevalue(PyObject* arg, int *value) *value = Py_CHARMASK(((PyBytesObject*)arg)->ob_sval[0]); return 1; } - else if (PyInt_Check(arg) || PyLong_Check(arg)) { + else if (_PyAnyInt_Check(arg)) { face_value = PyLong_AsLong(arg); } else { diff --git a/Objects/classobject.c b/Objects/classobject.c index 5b64578..02d7cfd 100644 --- a/Objects/classobject.c +++ b/Objects/classobject.c @@ -1009,7 +1009,7 @@ instance_hash(PyInstanceObject *inst) Py_DECREF(func); if (res == NULL) return -1; - if (PyInt_Check(res) || PyLong_Check(res)) + if (_PyAnyInt_Check(res)) /* This already converts a -1 result to -2. */ outcome = Py_TYPE(res)->tp_hash(res); else { diff --git a/Objects/codeobject.c b/Objects/codeobject.c index a66aa69..d50e4c6 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -423,10 +423,9 @@ _PyCode_ConstantKey(PyObject *op) /* Py_None is a singleton */ if (op == Py_None - || PyInt_CheckExact(op) - || PyLong_CheckExact(op) - || PyBool_Check(op) - || PyBytes_CheckExact(op) + || _PyAnyInt_CheckExact(op) + || PyBool_Check(op) + || PyBytes_CheckExact(op) #ifdef Py_USING_UNICODE || PyUnicode_CheckExact(op) #endif diff --git a/Objects/complexobject.c b/Objects/complexobject.c index aaefa2d..871eea3 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -796,7 +796,7 @@ complex_richcompare(PyObject *v, PyObject *w, int op) * NotImplemented. Only comparisons with core numeric types raise * TypeError. */ - if (PyInt_Check(w) || PyLong_Check(w) || + if (_PyAnyInt_Check(w) || PyFloat_Check(w) || PyComplex_Check(w)) { PyErr_SetString(PyExc_TypeError, "no ordering relation is defined " @@ -809,7 +809,7 @@ complex_richcompare(PyObject *v, PyObject *w, int op) assert(PyComplex_Check(v)); TO_COMPLEX(v, i); - if (PyInt_Check(w) || PyLong_Check(w)) { + if (_PyAnyInt_Check(w)) { /* Check for 0.0 imaginary part first to avoid the rich * comparison when possible. */ diff --git a/Objects/enumobject.c b/Objects/enumobject.c index 8f86a5b..73b656b 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -31,7 +31,7 @@ enum_new(PyTypeObject *type, PyObject *args, PyObject *kwds) Py_DECREF(en); return NULL; } - assert(PyInt_Check(start) || PyLong_Check(start)); + assert(_PyAnyInt_Check(start)); en->en_index = PyInt_AsSsize_t(start); if (en->en_index == -1 && PyErr_Occurred()) { PyErr_Clear(); diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 37dd67e..5954d39 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -428,7 +428,7 @@ float_richcompare(PyObject *v, PyObject *w, int op) j = PyFloat_AS_DOUBLE(w); else if (!Py_IS_FINITE(i)) { - if (PyInt_Check(w) || PyLong_Check(w)) + if (_PyAnyInt_Check(w)) /* If i is an infinity, its magnitude exceeds any * finite integer, so it doesn't matter which int we * compare i with. If i is a NaN, similarly. diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c index 9daeafc..dc18211 100644 --- a/Objects/sliceobject.c +++ b/Objects/sliceobject.c @@ -107,20 +107,20 @@ PySlice_GetIndices(PySliceObject *r, Py_ssize_t length, if (r->step == Py_None) { *step = 1; } else { - if (!PyInt_Check(r->step) && !PyLong_Check(r->step)) return -1; + if (!_PyAnyInt_Check(r->step)) return -1; *step = PyInt_AsSsize_t(r->step); } if (r->start == Py_None) { *start = *step < 0 ? length-1 : 0; } else { - if (!PyInt_Check(r->start) && !PyLong_Check(r->start)) return -1; + if (!_PyAnyInt_Check(r->start)) return -1; *start = PyInt_AsSsize_t(r->start); if (*start < 0) *start += length; } if (r->stop == Py_None) { *stop = *step < 0 ? -1 : length; } else { - if (!PyInt_Check(r->stop) && !PyLong_Check(r->stop)) return -1; + if (!_PyAnyInt_Check(r->stop)) return -1; *stop = PyInt_AsSsize_t(r->stop); if (*stop < 0) *stop += length; } diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 59d22e7..b21afb4 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -4504,7 +4504,7 @@ PyString_Format(PyObject *format, PyObject *args) if (PyNumber_Check(v)) { PyObject *iobj=NULL; - if (PyInt_Check(v) || (PyLong_Check(v))) { + if (_PyAnyInt_Check(v)) { iobj = v; Py_INCREF(iobj); } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index d011f7d..8bf04df 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -8628,7 +8628,7 @@ PyObject *PyUnicode_Format(PyObject *format, if (PyNumber_Check(v)) { PyObject *iobj=NULL; - if (PyInt_Check(v) || (PyLong_Check(v))) { + if (_PyAnyInt_Check(v)) { iobj = v; Py_INCREF(iobj); } diff --git a/PC/_winreg.c b/PC/_winreg.c index e139cce..f0f8df3 100644 --- a/PC/_winreg.c +++ b/PC/_winreg.c @@ -641,7 +641,7 @@ PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK) PyHKEYObject *pH = (PyHKEYObject *)ob; *pHANDLE = pH->hkey; } - else if (PyInt_Check(ob) || PyLong_Check(ob)) { + else if (_PyAnyInt_Check(ob)) { /* We also support integers */ PyErr_Clear(); *pHANDLE = (HKEY)PyLong_AsVoidPtr(ob); @@ -753,8 +753,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) Py_ssize_t i,j; switch (typ) { case REG_DWORD: - if (value != Py_None && - !(PyInt_Check(value) || PyLong_Check(value))) + if (value != Py_None && !_PyAnyInt_Check(value)) return FALSE; *retDataBuf = (BYTE *)PyMem_NEW(DWORD, 1); if (*retDataBuf==NULL){ diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 08353a9..ac61c78 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -830,7 +830,7 @@ static int obj2ast_string(PyObject* obj, PyObject** out, PyArena* arena) static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) { int i; - if (!PyInt_Check(obj) && !PyLong_Check(obj)) { + if (!_PyAnyInt_Check(obj)) { PyObject *s = PyObject_Repr(obj); if (s == NULL) return 1; PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s", diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 4ac5cf5..2e7a1af 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -617,7 +617,7 @@ static int obj2ast_string(PyObject* obj, PyObject** out, PyArena* arena) static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) { int i; - if (!PyInt_Check(obj) && !PyLong_Check(obj)) { + if (!_PyAnyInt_Check(obj)) { PyObject *s = PyObject_Repr(obj); if (s == NULL) return 1; PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s", diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 9ce3b27..f19115d 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1780,7 +1780,7 @@ get_range_long_argument(PyObject *arg, const char *name) { PyObject *v; PyNumberMethods *nb; - if (PyInt_Check(arg) || PyLong_Check(arg)) { + if (_PyAnyInt_Check(arg)) { Py_INCREF(arg); return arg; } @@ -1795,7 +1795,7 @@ get_range_long_argument(PyObject *arg, const char *name) v = nb->nb_int(arg); if (v == NULL) return NULL; - if (PyInt_Check(v) || PyLong_Check(v)) + if (_PyAnyInt_Check(v)) return v; Py_DECREF(v); PyErr_SetString(PyExc_TypeError, diff --git a/Python/ceval.c b/Python/ceval.c index b55b4d6..2088a27 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -4750,8 +4750,7 @@ _PyEval_SliceIndexNotNone(PyObject *v, Py_ssize_t *pi) #undef ISINDEX -#define ISINDEX(x) ((x) == NULL || \ - PyInt_Check(x) || PyLong_Check(x) || PyIndex_Check(x)) +#define ISINDEX(x) ((x) == NULL || _PyAnyInt_Check(x) || PyIndex_Check(x)) static PyObject * apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */ diff --git a/Python/pythonrun.c b/Python/pythonrun.c index c33b6c0..5707c9f 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1136,7 +1136,7 @@ handle_system_exit(void) /* If we failed to dig out the 'code' attribute, just let the else clause below print the error. */ } - if (PyInt_Check(value) || PyLong_Check(value)) + if (_PyAnyInt_Check(value)) exitcode = (int)PyInt_AsLong(value); else { PyObject *sys_stderr = PySys_GetObject("stderr"); |