mirror of https://github.com/python/cpython.git
deal with old-style classes in issubclass and isinstance
This commit is contained in:
parent
fb6fb062e8
commit
94eaba78b7
|
@ -2927,7 +2927,7 @@ PyObject_IsInstance(PyObject *inst, PyObject *cls)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyInstance_Check(cls)) {
|
if (PyClass_Check(cls) || PyInstance_Check(cls)) {
|
||||||
checker = PyObject_GetAttrString(cls, "__instancecheck__");
|
checker = PyObject_GetAttrString(cls, "__instancecheck__");
|
||||||
if (checker == NULL) {
|
if (checker == NULL) {
|
||||||
if (PyErr_ExceptionMatches(PyExc_AttributeError))
|
if (PyErr_ExceptionMatches(PyExc_AttributeError))
|
||||||
|
@ -3013,7 +3013,7 @@ PyObject_IsSubclass(PyObject *derived, PyObject *cls)
|
||||||
Py_LeaveRecursiveCall();
|
Py_LeaveRecursiveCall();
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
if (PyInstance_Check(cls)) {
|
if (PyClass_Check(cls) || PyInstance_Check(cls)) {
|
||||||
PyErr_Fetch(&t, &v, &tb);
|
PyErr_Fetch(&t, &v, &tb);
|
||||||
checker = PyObject_GetAttr(cls, name);
|
checker = PyObject_GetAttr(cls, name);
|
||||||
if (checker == NULL &&
|
if (checker == NULL &&
|
||||||
|
|
Loading…
Reference in New Issue