bpo-39573: Finish converting to new Py_IS_TYPE() macro (GH-18601)

This commit is contained in:
Andy Lester 2020-03-04 07:15:20 -06:00 committed by GitHub
parent 22a9a546ff
commit dffe4c0709
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 56 additions and 57 deletions

View File

@ -64,7 +64,7 @@ typedef struct {
char *encoding; char *encoding;
} PyCursesWindowObject; } PyCursesWindowObject;
#define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) #define PyCursesWindow_Check(v) Py_IS_TYPE(v, &PyCursesWindow_Type)
#define PyCurses_CAPSULE_NAME "_curses._C_API" #define PyCurses_CAPSULE_NAME "_curses._C_API"
@ -97,4 +97,3 @@ static const char catchall_NULL[] = "curses function returned NULL";
#endif /* !defined(Py_CURSES_H) */ #endif /* !defined(Py_CURSES_H) */

View File

@ -572,7 +572,7 @@ future_set_exception(FutureObj *fut, PyObject *exc)
PyErr_SetString(PyExc_TypeError, "invalid exception object"); PyErr_SetString(PyExc_TypeError, "invalid exception object");
return NULL; return NULL;
} }
if ((PyObject*)Py_TYPE(exc_val) == PyExc_StopIteration) { if (Py_IS_TYPE(exc_val, (PyTypeObject *)PyExc_StopIteration)) {
Py_DECREF(exc_val); Py_DECREF(exc_val);
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"StopIteration interacts badly with generators " "StopIteration interacts badly with generators "

View File

@ -489,7 +489,7 @@ deque_copy(PyObject *deque, PyObject *Py_UNUSED(ignored))
{ {
PyObject *result; PyObject *result;
dequeobject *old_deque = (dequeobject *)deque; dequeobject *old_deque = (dequeobject *)deque;
if (Py_TYPE(deque) == &deque_type) { if (Py_IS_TYPE(deque, &deque_type)) {
dequeobject *new_deque; dequeobject *new_deque;
PyObject *rv; PyObject *rv;

View File

@ -2366,7 +2366,7 @@ typedef struct {
char insert_pis; char insert_pis;
} TreeBuilderObject; } TreeBuilderObject;
#define TreeBuilder_CheckExact(op) (Py_TYPE(op) == &TreeBuilder_Type) #define TreeBuilder_CheckExact(op) Py_IS_TYPE((op), &TreeBuilder_Type)
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/* constructor and destructor */ /* constructor and destructor */

View File

@ -1449,8 +1449,8 @@ _io_BufferedReader___init___impl(buffered *self, PyObject *raw,
return -1; return -1;
_bufferedreader_reset_buf(self); _bufferedreader_reset_buf(self);
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedReader_Type && self->fast_closed_checks = (Py_IS_TYPE(self, &PyBufferedReader_Type) &&
Py_TYPE(raw) == &PyFileIO_Type); Py_IS_TYPE(raw, &PyFileIO_Type));
self->ok = 1; self->ok = 1;
return 0; return 0;
@ -1795,8 +1795,8 @@ _io_BufferedWriter___init___impl(buffered *self, PyObject *raw,
_bufferedwriter_reset_buf(self); _bufferedwriter_reset_buf(self);
self->pos = 0; self->pos = 0;
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedWriter_Type && self->fast_closed_checks = (Py_IS_TYPE(self, &PyBufferedWriter_Type) &&
Py_TYPE(raw) == &PyFileIO_Type); Py_IS_TYPE(raw, &PyFileIO_Type));
self->ok = 1; self->ok = 1;
return 0; return 0;
@ -2309,8 +2309,8 @@ _io_BufferedRandom___init___impl(buffered *self, PyObject *raw,
_bufferedwriter_reset_buf(self); _bufferedwriter_reset_buf(self);
self->pos = 0; self->pos = 0;
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedRandom_Type && self->fast_closed_checks = (Py_IS_TYPE(self, &PyBufferedRandom_Type) &&
Py_TYPE(raw) == &PyFileIO_Type); Py_IS_TYPE(raw, &PyFileIO_Type));
self->ok = 1; self->ok = 1;
return 0; return 0;

View File

@ -402,7 +402,7 @@ stringio_iternext(stringio *self)
CHECK_CLOSED(self); CHECK_CLOSED(self);
ENSURE_REALIZED(self); ENSURE_REALIZED(self);
if (Py_TYPE(self) == &PyStringIO_Type) { if (Py_IS_TYPE(self, &PyStringIO_Type)) {
/* Skip method call overhead for speed */ /* Skip method call overhead for speed */
line = _stringio_readline(self, -1); line = _stringio_readline(self, -1);
} }

View File

@ -897,7 +897,7 @@ _textiowrapper_decode(PyObject *decoder, PyObject *bytes, int eof)
{ {
PyObject *chars; PyObject *chars;
if (Py_TYPE(decoder) == &PyIncrementalNewlineDecoder_Type) if (Py_IS_TYPE(decoder, &PyIncrementalNewlineDecoder_Type))
chars = _PyIncrementalNewlineDecoder_decode(decoder, bytes, eof); chars = _PyIncrementalNewlineDecoder_decode(decoder, bytes, eof);
else else
chars = PyObject_CallMethodObjArgs(decoder, _PyIO_str_decode, bytes, chars = PyObject_CallMethodObjArgs(decoder, _PyIO_str_decode, bytes,
@ -1226,15 +1226,15 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
/* Finished sorting out the codec details */ /* Finished sorting out the codec details */
Py_CLEAR(codec_info); Py_CLEAR(codec_info);
if (Py_TYPE(buffer) == &PyBufferedReader_Type || if (Py_IS_TYPE(buffer, &PyBufferedReader_Type) ||
Py_TYPE(buffer) == &PyBufferedWriter_Type || Py_IS_TYPE(buffer, &PyBufferedWriter_Type) ||
Py_TYPE(buffer) == &PyBufferedRandom_Type) Py_IS_TYPE(buffer, &PyBufferedRandom_Type))
{ {
if (_PyObject_LookupAttrId(buffer, &PyId_raw, &raw) < 0) if (_PyObject_LookupAttrId(buffer, &PyId_raw, &raw) < 0)
goto error; goto error;
/* Cache the raw FileIO object to speed up 'closed' checks */ /* Cache the raw FileIO object to speed up 'closed' checks */
if (raw != NULL) { if (raw != NULL) {
if (Py_TYPE(raw) == &PyFileIO_Type) if (Py_IS_TYPE(raw, &PyFileIO_Type))
self->raw = raw; self->raw = raw;
else else
Py_DECREF(raw); Py_DECREF(raw);
@ -1466,7 +1466,7 @@ textiowrapper_closed_get(textio *self, void *context);
do { \ do { \
int r; \ int r; \
PyObject *_res; \ PyObject *_res; \
if (Py_TYPE(self) == &PyTextIOWrapper_Type) { \ if (Py_IS_TYPE(self, &PyTextIOWrapper_Type)) { \
if (self->raw != NULL) \ if (self->raw != NULL) \
r = _PyFileIO_closed(self->raw); \ r = _PyFileIO_closed(self->raw); \
else { \ else { \
@ -1937,7 +1937,7 @@ _io_TextIOWrapper_read_impl(textio *self, Py_ssize_t n)
if (bytes == NULL) if (bytes == NULL)
goto fail; goto fail;
if (Py_TYPE(self->decoder) == &PyIncrementalNewlineDecoder_Type) if (Py_IS_TYPE(self->decoder, &PyIncrementalNewlineDecoder_Type))
decoded = _PyIncrementalNewlineDecoder_decode(self->decoder, decoded = _PyIncrementalNewlineDecoder_decode(self->decoder,
bytes, 1); bytes, 1);
else else
@ -3079,7 +3079,7 @@ textiowrapper_iternext(textio *self)
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
self->telling = 0; self->telling = 0;
if (Py_TYPE(self) == &PyTextIOWrapper_Type) { if (Py_IS_TYPE(self, &PyTextIOWrapper_Type)) {
/* Skip method call overhead for speed */ /* Skip method call overhead for speed */
line = _textiowrapper_readline(self, -1); line = _textiowrapper_readline(self, -1);
} }

View File

@ -4974,7 +4974,7 @@ Pickler_set_memo(PicklerObject *self, PyObject *obj, void *Py_UNUSED(ignored))
return -1; return -1;
} }
if (Py_TYPE(obj) == &PicklerMemoProxyType) { if (Py_IS_TYPE(obj, &PicklerMemoProxyType)) {
PicklerObject *pickler = PicklerObject *pickler =
((PicklerMemoProxyObject *)obj)->pickler; ((PicklerMemoProxyObject *)obj)->pickler;
@ -7519,7 +7519,7 @@ Unpickler_set_memo(UnpicklerObject *self, PyObject *obj, void *Py_UNUSED(ignored
return -1; return -1;
} }
if (Py_TYPE(obj) == &UnpicklerMemoProxyType) { if (Py_IS_TYPE(obj, &UnpicklerMemoProxyType)) {
UnpicklerObject *unpickler = UnpicklerObject *unpickler =
((UnpicklerMemoProxyObject *)obj)->unpickler; ((UnpicklerMemoProxyObject *)obj)->unpickler;

View File

@ -844,7 +844,7 @@ _ldict(localobject *self)
} }
} }
else { else {
assert(Py_TYPE(dummy) == &localdummytype); assert(Py_IS_TYPE(dummy, &localdummytype));
ldict = ((localdummyobject *) dummy)->localdict; ldict = ((localdummyobject *) dummy)->localdict;
} }
@ -1209,7 +1209,7 @@ release_sentinel(void *wr_raw)
PyObject *obj = PyWeakref_GET_OBJECT(wr); PyObject *obj = PyWeakref_GET_OBJECT(wr);
lockobject *lock; lockobject *lock;
if (obj != Py_None) { if (obj != Py_None) {
assert(Py_TYPE(obj) == &Locktype); assert(Py_IS_TYPE(obj, &Locktype));
lock = (lockobject *) obj; lock = (lockobject *) obj;
if (lock->locked) { if (lock->locked) {
PyThread_release_lock(lock->lock_lock); PyThread_release_lock(lock->lock_lock);

View File

@ -65,7 +65,7 @@ typedef struct {
MultibyteCodec *codec; MultibyteCodec *codec;
} MultibyteCodecObject; } MultibyteCodecObject;
#define MultibyteCodec_Check(op) (Py_TYPE(op) == &MultibyteCodec_Type) #define MultibyteCodec_Check(op) Py_IS_TYPE((op), &MultibyteCodec_Type)
#define _MultibyteStatefulCodec_HEAD \ #define _MultibyteStatefulCodec_HEAD \
PyObject_HEAD \ PyObject_HEAD \

View File

@ -527,7 +527,7 @@ teedataobject_traverse(teedataobject *tdo, visitproc visit, void * arg)
static void static void
teedataobject_safe_decref(PyObject *obj) teedataobject_safe_decref(PyObject *obj)
{ {
while (obj && Py_TYPE(obj) == &teedataobject_type && while (obj && Py_IS_TYPE(obj, &teedataobject_type) &&
Py_REFCNT(obj) == 1) { Py_REFCNT(obj) == 1) {
PyObject *nextlink = ((teedataobject *)obj)->nextlink; PyObject *nextlink = ((teedataobject *)obj)->nextlink;
((teedataobject *)obj)->nextlink = NULL; ((teedataobject *)obj)->nextlink = NULL;

View File

@ -2472,7 +2472,7 @@ object_recursive_isinstance(PyThreadState *tstate, PyObject *inst, PyObject *cls
_Py_IDENTIFIER(__instancecheck__); _Py_IDENTIFIER(__instancecheck__);
/* Quick test for an exact match */ /* Quick test for an exact match */
if (Py_TYPE(inst) == (PyTypeObject *)cls) { if (Py_IS_TYPE(inst, (PyTypeObject *)cls)) {
return 1; return 1;
} }

View File

@ -1178,7 +1178,7 @@ typedef struct {
PyObject *self; PyObject *self;
} wrapperobject; } wrapperobject;
#define Wrapper_Check(v) (Py_TYPE(v) == &_PyMethodWrapper_Type) #define Wrapper_Check(v) Py_IS_TYPE(v, &_PyMethodWrapper_Type)
static void static void
wrapper_dealloc(wrapperobject *wp) wrapper_dealloc(wrapperobject *wp)
@ -1628,7 +1628,7 @@ property_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
if (rc <= 0) { if (rc <= 0) {
return rc; return rc;
} }
if (Py_TYPE(self) == &PyProperty_Type) { if (Py_IS_TYPE(self, &PyProperty_Type)) {
Py_XSETREF(self->prop_doc, get_doc); Py_XSETREF(self->prop_doc, get_doc);
} }
else { else {

View File

@ -875,7 +875,7 @@ oserror_init(PyOSErrorObject *self, PyObject **p_args,
/* self->filename will remain Py_None otherwise */ /* self->filename will remain Py_None otherwise */
if (filename && filename != Py_None) { if (filename && filename != Py_None) {
if (Py_TYPE(self) == (PyTypeObject *) PyExc_BlockingIOError && if (Py_IS_TYPE(self, (PyTypeObject *) PyExc_BlockingIOError) &&
PyNumber_Check(filename)) { PyNumber_Check(filename)) {
/* BlockingIOError's 3rd argument can be the number of /* BlockingIOError's 3rd argument can be the number of
* characters written. * characters written.
@ -1379,7 +1379,7 @@ SyntaxError_init(PySyntaxErrorObject *self, PyObject *args, PyObject *kwds)
* Only applies to SyntaxError instances, not to subclasses such * Only applies to SyntaxError instances, not to subclasses such
* as TabError or IndentationError (see issue #31161) * as TabError or IndentationError (see issue #31161)
*/ */
if ((PyObject*)Py_TYPE(self) == PyExc_SyntaxError && if (Py_IS_TYPE(self, (PyTypeObject *)PyExc_SyntaxError) &&
self->text && PyUnicode_Check(self->text) && self->text && PyUnicode_Check(self->text) &&
_report_missing_parentheses(self) < 0) { _report_missing_parentheses(self) < 0) {
return -1; return -1;

View File

@ -1216,10 +1216,10 @@ static PyAsyncGenASend *ag_asend_freelist[_PyAsyncGen_MAXFREELIST];
static int ag_asend_freelist_free = 0; static int ag_asend_freelist_free = 0;
#define _PyAsyncGenWrappedValue_CheckExact(o) \ #define _PyAsyncGenWrappedValue_CheckExact(o) \
(Py_TYPE(o) == &_PyAsyncGenWrappedValue_Type) Py_IS_TYPE(o, &_PyAsyncGenWrappedValue_Type)
#define PyAsyncGenASend_CheckExact(o) \ #define PyAsyncGenASend_CheckExact(o) \
(Py_TYPE(o) == &_PyAsyncGenASend_Type) Py_IS_TYPE(o, &_PyAsyncGenASend_Type)
static int static int
@ -1442,7 +1442,7 @@ PyAsyncGen_ClearFreeLists(void)
while (ag_asend_freelist_free) { while (ag_asend_freelist_free) {
PyAsyncGenASend *o; PyAsyncGenASend *o;
o = ag_asend_freelist[--ag_asend_freelist_free]; o = ag_asend_freelist[--ag_asend_freelist_free];
assert(Py_TYPE(o) == &_PyAsyncGenASend_Type); assert(Py_IS_TYPE(o, &_PyAsyncGenASend_Type));
PyObject_GC_Del(o); PyObject_GC_Del(o);
} }

View File

@ -2052,8 +2052,8 @@ unsafe_latin_compare(PyObject *v, PyObject *w, MergeState *ms)
int res; int res;
/* Modified from Objects/unicodeobject.c:unicode_compare, assuming: */ /* Modified from Objects/unicodeobject.c:unicode_compare, assuming: */
assert(Py_TYPE(v) == Py_TYPE(w)); assert(Py_IS_TYPE(v, &PyUnicode_Type));
assert(Py_TYPE(v) == &PyUnicode_Type); assert(Py_IS_TYPE(w, &PyUnicode_Type));
assert(PyUnicode_KIND(v) == PyUnicode_KIND(w)); assert(PyUnicode_KIND(v) == PyUnicode_KIND(w));
assert(PyUnicode_KIND(v) == PyUnicode_1BYTE_KIND); assert(PyUnicode_KIND(v) == PyUnicode_1BYTE_KIND);
@ -2075,8 +2075,8 @@ unsafe_long_compare(PyObject *v, PyObject *w, MergeState *ms)
PyLongObject *vl, *wl; sdigit v0, w0; int res; PyLongObject *vl, *wl; sdigit v0, w0; int res;
/* Modified from Objects/longobject.c:long_compare, assuming: */ /* Modified from Objects/longobject.c:long_compare, assuming: */
assert(Py_TYPE(v) == Py_TYPE(w)); assert(Py_IS_TYPE(v, &PyLong_Type));
assert(Py_TYPE(v) == &PyLong_Type); assert(Py_IS_TYPE(w, &PyLong_Type));
assert(Py_ABS(Py_SIZE(v)) <= 1); assert(Py_ABS(Py_SIZE(v)) <= 1);
assert(Py_ABS(Py_SIZE(w)) <= 1); assert(Py_ABS(Py_SIZE(w)) <= 1);
@ -2103,8 +2103,8 @@ unsafe_float_compare(PyObject *v, PyObject *w, MergeState *ms)
int res; int res;
/* Modified from Objects/floatobject.c:float_richcompare, assuming: */ /* Modified from Objects/floatobject.c:float_richcompare, assuming: */
assert(Py_TYPE(v) == Py_TYPE(w)); assert(Py_IS_TYPE(v, &PyFloat_Type));
assert(Py_TYPE(v) == &PyFloat_Type); assert(Py_IS_TYPE(w, &PyFloat_Type));
res = PyFloat_AS_DOUBLE(v) < PyFloat_AS_DOUBLE(w); res = PyFloat_AS_DOUBLE(v) < PyFloat_AS_DOUBLE(w);
assert(res == PyObject_RichCompareBool(v, w, Py_LT)); assert(res == PyObject_RichCompareBool(v, w, Py_LT));
@ -2125,8 +2125,8 @@ unsafe_tuple_compare(PyObject *v, PyObject *w, MergeState *ms)
int k; int k;
/* Modified from Objects/tupleobject.c:tuplerichcompare, assuming: */ /* Modified from Objects/tupleobject.c:tuplerichcompare, assuming: */
assert(Py_TYPE(v) == Py_TYPE(w)); assert(Py_IS_TYPE(v, &PyTuple_Type));
assert(Py_TYPE(v) == &PyTuple_Type); assert(Py_IS_TYPE(w, &PyTuple_Type));
assert(Py_SIZE(v) > 0); assert(Py_SIZE(v) > 0);
assert(Py_SIZE(w) > 0); assert(Py_SIZE(w) > 0);
@ -2247,7 +2247,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse)
* set ms appropriately. */ * set ms appropriately. */
if (saved_ob_size > 1) { if (saved_ob_size > 1) {
/* Assume the first element is representative of the whole list. */ /* Assume the first element is representative of the whole list. */
int keys_are_in_tuples = (Py_TYPE(lo.keys[0]) == &PyTuple_Type && int keys_are_in_tuples = (Py_IS_TYPE(lo.keys[0], &PyTuple_Type) &&
Py_SIZE(lo.keys[0]) > 0); Py_SIZE(lo.keys[0]) > 0);
PyTypeObject* key_type = (keys_are_in_tuples ? PyTypeObject* key_type = (keys_are_in_tuples ?
@ -2262,7 +2262,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse)
for (i=0; i < saved_ob_size; i++) { for (i=0; i < saved_ob_size; i++) {
if (keys_are_in_tuples && if (keys_are_in_tuples &&
!(Py_TYPE(lo.keys[i]) == &PyTuple_Type && Py_SIZE(lo.keys[i]) != 0)) { !(Py_IS_TYPE(lo.keys[i], &PyTuple_Type) && Py_SIZE(lo.keys[i]) != 0)) {
keys_are_in_tuples = 0; keys_are_in_tuples = 0;
keys_are_all_same_type = 0; keys_are_all_same_type = 0;
break; break;
@ -2275,7 +2275,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse)
PyTuple_GET_ITEM(lo.keys[i], 0) : PyTuple_GET_ITEM(lo.keys[i], 0) :
lo.keys[i]); lo.keys[i]);
if (Py_TYPE(key) != key_type) { if (!Py_IS_TYPE(key, key_type)) {
keys_are_all_same_type = 0; keys_are_all_same_type = 0;
/* If keys are in tuple we must loop over the whole list to make /* If keys are in tuple we must loop over the whole list to make
sure all items are tuples */ sure all items are tuples */

View File

@ -72,7 +72,7 @@ namespace_repr(PyObject *ns)
PyObject *separator, *pairsrepr, *repr = NULL; PyObject *separator, *pairsrepr, *repr = NULL;
const char * name; const char * name;
name = (Py_TYPE(ns) == &_PyNamespace_Type) ? "namespace" name = Py_IS_TYPE(ns, &_PyNamespace_Type) ? "namespace"
: Py_TYPE(ns)->tp_name; : Py_TYPE(ns)->tp_name;
i = Py_ReprEnter(ns); i = Py_ReprEnter(ns);

View File

@ -237,7 +237,7 @@ tupledealloc(PyTupleObject *op)
#if PyTuple_MAXSAVESIZE > 0 #if PyTuple_MAXSAVESIZE > 0
if (len < PyTuple_MAXSAVESIZE && if (len < PyTuple_MAXSAVESIZE &&
numfree[len] < PyTuple_MAXFREELIST && numfree[len] < PyTuple_MAXFREELIST &&
Py_TYPE(op) == &PyTuple_Type) Py_IS_TYPE(op, &PyTuple_Type))
{ {
op->ob_item[0] = (PyObject *) free_list[len]; op->ob_item[0] = (PyObject *) free_list[len];
numfree[len]++; numfree[len]++;

View File

@ -5335,7 +5335,7 @@ PyType_Ready(PyTypeObject *type)
NULL when type is &PyBaseObject_Type, and we know its ob_type is NULL when type is &PyBaseObject_Type, and we know its ob_type is
not NULL (it's initialized to &PyType_Type). But coverity doesn't not NULL (it's initialized to &PyType_Type). But coverity doesn't
know that. */ know that. */
if (Py_TYPE(type) == NULL && base != NULL) { if (Py_IS_TYPE(type, NULL) && base != NULL) {
Py_SET_TYPE(type, Py_TYPE(base)); Py_SET_TYPE(type, Py_TYPE(base));
} }
@ -6645,7 +6645,7 @@ slot_tp_getattr_hook(PyObject *self, PyObject *name)
needed, with call_attribute. */ needed, with call_attribute. */
getattribute = _PyType_LookupId(tp, &PyId___getattribute__); getattribute = _PyType_LookupId(tp, &PyId___getattribute__);
if (getattribute == NULL || if (getattribute == NULL ||
(Py_TYPE(getattribute) == &PyWrapperDescr_Type && (Py_IS_TYPE(getattribute, &PyWrapperDescr_Type) &&
((PyWrapperDescrObject *)getattribute)->d_wrapped == ((PyWrapperDescrObject *)getattribute)->d_wrapped ==
(void *)PyObject_GenericGetAttr)) (void *)PyObject_GenericGetAttr))
res = PyObject_GenericGetAttr(self, name); res = PyObject_GenericGetAttr(self, name);
@ -7352,7 +7352,7 @@ update_one_slot(PyTypeObject *type, slotdef *p)
} }
continue; continue;
} }
if (Py_TYPE(descr) == &PyWrapperDescr_Type && if (Py_IS_TYPE(descr, &PyWrapperDescr_Type) &&
((PyWrapperDescrObject *)descr)->d_base->name_strobj == p->name_strobj) { ((PyWrapperDescrObject *)descr)->d_base->name_strobj == p->name_strobj) {
void **tptr = resolve_slotdups(type, p->name_strobj); void **tptr = resolve_slotdups(type, p->name_strobj);
if (tptr == NULL || tptr == ptr) if (tptr == NULL || tptr == ptr)
@ -7375,7 +7375,7 @@ update_one_slot(PyTypeObject *type, slotdef *p)
use_generic = 1; use_generic = 1;
} }
} }
else if (Py_TYPE(descr) == &PyCFunction_Type && else if (Py_IS_TYPE(descr, &PyCFunction_Type) &&
PyCFunction_GET_FUNCTION(descr) == PyCFunction_GET_FUNCTION(descr) ==
(PyCFunction)(void(*)(void))tp_new_wrapper && (PyCFunction)(void(*)(void))tp_new_wrapper &&
ptr == (void**)&type->tp_new) ptr == (void**)&type->tp_new)

View File

@ -8484,7 +8484,7 @@ charmapencode_output(Py_UCS4 c, PyObject *mapping,
char *outstart; char *outstart;
Py_ssize_t outsize = PyBytes_GET_SIZE(*outobj); Py_ssize_t outsize = PyBytes_GET_SIZE(*outobj);
if (Py_TYPE(mapping) == &EncodingMapType) { if (Py_IS_TYPE(mapping, &EncodingMapType)) {
int res = encoding_map_lookup(c, mapping); int res = encoding_map_lookup(c, mapping);
Py_ssize_t requiredsize = *outpos+1; Py_ssize_t requiredsize = *outpos+1;
if (res == -1) if (res == -1)
@ -8563,7 +8563,7 @@ charmap_encoding_error(
/* find all unencodable characters */ /* find all unencodable characters */
while (collendpos < size) { while (collendpos < size) {
PyObject *rep; PyObject *rep;
if (Py_TYPE(mapping) == &EncodingMapType) { if (Py_IS_TYPE(mapping, &EncodingMapType)) {
ch = PyUnicode_READ_CHAR(unicode, collendpos); ch = PyUnicode_READ_CHAR(unicode, collendpos);
val = encoding_map_lookup(ch, mapping); val = encoding_map_lookup(ch, mapping);
if (val != -1) if (val != -1)

View File

@ -4851,7 +4851,7 @@ trace_call_function(PyThreadState *tstate,
C_TRACE(x, PyObject_Vectorcall(func, args, nargs, kwnames)); C_TRACE(x, PyObject_Vectorcall(func, args, nargs, kwnames));
return x; return x;
} }
else if (Py_TYPE(func) == &PyMethodDescr_Type && nargs > 0) { else if (Py_IS_TYPE(func, &PyMethodDescr_Type) && nargs > 0) {
/* We need to create a temporary bound method as argument /* We need to create a temporary bound method as argument
for profiling. for profiling.
@ -4912,7 +4912,7 @@ do_call_core(PyThreadState *tstate, PyObject *func, PyObject *callargs, PyObject
C_TRACE(result, PyObject_Call(func, callargs, kwdict)); C_TRACE(result, PyObject_Call(func, callargs, kwdict));
return result; return result;
} }
else if (Py_TYPE(func) == &PyMethodDescr_Type) { else if (Py_IS_TYPE(func, &PyMethodDescr_Type)) {
Py_ssize_t nargs = PyTuple_GET_SIZE(callargs); Py_ssize_t nargs = PyTuple_GET_SIZE(callargs);
if (nargs > 0 && tstate->use_tracing) { if (nargs > 0 && tstate->use_tracing) {
/* We need to create a temporary bound method as argument /* We need to create a temporary bound method as argument

View File

@ -573,7 +573,7 @@ PyErr_BadArgument(void)
PyObject * PyObject *
_PyErr_NoMemory(PyThreadState *tstate) _PyErr_NoMemory(PyThreadState *tstate)
{ {
if (Py_TYPE(PyExc_MemoryError) == NULL) { if (Py_IS_TYPE(PyExc_MemoryError, NULL)) {
/* PyErr_NoMemory() has been called before PyExc_MemoryError has been /* PyErr_NoMemory() has been called before PyExc_MemoryError has been
initialized by _PyExc_Init() */ initialized by _PyExc_Init() */
Py_FatalError("Out of memory and PyExc_MemoryError is not " Py_FatalError("Out of memory and PyExc_MemoryError is not "

View File

@ -181,7 +181,7 @@ _PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
m = NULL; m = NULL;
goto error; goto error;
} }
if (Py_TYPE(m) == NULL) { if (Py_IS_TYPE(m, NULL)) {
/* This can happen when a PyModuleDef is returned without calling /* This can happen when a PyModuleDef is returned without calling
* PyModuleDef_Init on it * PyModuleDef_Init on it
*/ */