diff --git a/Objects/floatobject.c b/Objects/floatobject.c index beb35e9ca61..d606547841c 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -775,7 +775,7 @@ PyFloat_Fini(void) for (i = 0, p = &list->objects[0]; i < N_FLOATOBJECTS; i++, p++) { - if (p->ob_type == &PyFloat_Type && p->ob_refcnt != 0) + if (PyFloat_CheckExact(p) && p->ob_refcnt != 0) frem++; } next = list->next; @@ -785,7 +785,7 @@ PyFloat_Fini(void) for (i = 0, p = &list->objects[0]; i < N_FLOATOBJECTS; i++, p++) { - if (p->ob_type != &PyFloat_Type || + if (!PyFloat_CheckExact(p) || p->ob_refcnt == 0) { p->ob_type = (struct _typeobject *) free_list; @@ -818,7 +818,7 @@ PyFloat_Fini(void) for (i = 0, p = &list->objects[0]; i < N_FLOATOBJECTS; i++, p++) { - if (p->ob_type == &PyFloat_Type && + if (PyFloat_CheckExact(p) && p->ob_refcnt != 0) { char buf[100]; PyFloat_AsString(buf, p); diff --git a/Objects/intobject.c b/Objects/intobject.c index 12edb510026..261edb84433 100644 --- a/Objects/intobject.c +++ b/Objects/intobject.c @@ -134,7 +134,7 @@ PyInt_FromLong(long ival) static void int_dealloc(PyIntObject *v) { - if (v->ob_type == &PyInt_Type) { + if (PyInt_CheckExact(v)) { v->ob_type = (struct _typeobject *)free_list; free_list = v; } @@ -999,7 +999,7 @@ PyInt_Fini(void) for (i = 0, p = &list->objects[0]; i < N_INTOBJECTS; i++, p++) { - if (p->ob_type == &PyInt_Type && p->ob_refcnt != 0) + if (PyInt_CheckExact(p) && p->ob_refcnt != 0) irem++; } next = list->next; @@ -1009,7 +1009,7 @@ PyInt_Fini(void) for (i = 0, p = &list->objects[0]; i < N_INTOBJECTS; i++, p++) { - if (p->ob_type != &PyInt_Type || + if (!PyInt_CheckExact(p) || p->ob_refcnt == 0) { p->ob_type = (struct _typeobject *) free_list; @@ -1052,7 +1052,7 @@ PyInt_Fini(void) for (i = 0, p = &list->objects[0]; i < N_INTOBJECTS; i++, p++) { - if (p->ob_type == &PyInt_Type && p->ob_refcnt != 0) + if (PyInt_CheckExact(p) && p->ob_refcnt != 0) fprintf(stderr, "# \n", p, p->ob_refcnt, p->ob_ival);