catch nasty exception classes with __new__ that doesn't return a exception (closes #11627)
Patch from Andreas Stührk.
This commit is contained in:
@@ -3413,6 +3413,13 @@ do_raise(PyObject *exc, PyObject *cause)
|
||||
value = PyObject_CallObject(exc, NULL);
|
||||
if (value == NULL)
|
||||
goto raise_error;
|
||||
if (!PyExceptionInstance_Check(value)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"calling %R should have returned an instance of "
|
||||
"BaseException, not %R",
|
||||
type, Py_TYPE(value));
|
||||
goto raise_error;
|
||||
}
|
||||
}
|
||||
else if (PyExceptionInstance_Check(exc)) {
|
||||
value = exc;
|
||||
|
||||
Reference in New Issue
Block a user