From 3a749931181b747220904e11535c0fe91594c228 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 30 Sep 1997 15:00:18 +0000 Subject: [PATCH] PyErr_NormalizeException(): If the exception's type is a class and the instance's class is a subclass of this, then use the instance's class as the exception type. --- Python/errors.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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;