Commit 74a7fa66 authored by Victor Stinner's avatar Victor Stinner

Issue #18408: Fix PyErr_NormalizeException(), handle PyObject_IsSubclass() failure

PyObject_IsSubclass() can fail and raise a new exception!
parent bdf630c4
......@@ -227,12 +227,21 @@ PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
value will be an instance.
*/
if (PyExceptionClass_Check(type)) {
int is_subclass;
if (inclass) {
is_subclass = PyObject_IsSubclass(inclass, type);
if (is_subclass < 0)
goto finally;
}
else
is_subclass = 0;
/* if the value was not an instance, or is not an instance
whose class is (or is derived from) type, then use the
value as an argument to instantiation of the type
class.
*/
if (!inclass || !PyObject_IsSubclass(inclass, type)) {
if (!inclass || !is_subclass) {
PyObject *args, *res;
if (value == Py_None)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment