diff --git a/Python/errors.c b/Python/errors.c index 31d9cdff8b2..7b8c03f21e0 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -206,6 +206,14 @@ PyErr_NormalizeException(exc, val, tb) Py_DECREF(value); value = res; } + /* if the class of the instance doesn't exactly match the + class of the type, believe the instance + */ + else if (inclass != type) { + Py_DECREF(type); + type = inclass; + Py_INCREF(type); + } } *exc = type; *val = value;