bpo-30570: Use Py_EnterRecursiveCall() in issubclass() (GH-29048)

* Use Py_EnterRecursiveCall() in issubclass()

Reviewed-by: Gregory P. Smith <greg@krypto.org> [Google]
This commit is contained in:
Dennis Sweeney 2021-10-22 17:24:08 -04:00 committed by GitHub
parent f6e8b80d20
commit 423fa1c181
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 7 deletions

View file

@ -2557,14 +2557,22 @@ abstract_issubclass(PyObject *derived, PyObject *cls)
derived = PyTuple_GET_ITEM(bases, 0);
continue;
}
for (i = 0; i < n; i++) {
r = abstract_issubclass(PyTuple_GET_ITEM(bases, i), cls);
if (r != 0)
break;
}
Py_DECREF(bases);
return r;
break;
}
assert(n >= 2);
if (Py_EnterRecursiveCall(" in __issubclass__")) {
Py_DECREF(bases);
return -1;
}
for (i = 0; i < n; i++) {
r = abstract_issubclass(PyTuple_GET_ITEM(bases, i), cls);
if (r != 0) {
break;
}
}
Py_LeaveRecursiveCall();
Py_DECREF(bases);
return r;
}
static int