From e4c06bcca358c6dcb6393a75a1589ff6a2d45cde Mon Sep 17 00:00:00 2001 From: scoder Date: Mon, 31 Jul 2017 22:27:46 +0200 Subject: bpo-31091: Remove dead code in PyErr_GivenExceptionMatches(). (#2963) According to the comment, there was previously a call to PyObject_IsSubclass() involved which could fail, but since it was replaced with a call to PyType_IsSubtype(), it can no longer fail. --- Python/errors.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/Python/errors.c b/Python/errors.c index 3785e69..261dd7b 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -191,19 +191,7 @@ PyErr_GivenExceptionMatches(PyObject *err, PyObject *exc) err = PyExceptionInstance_Class(err); if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) { - int res = 0; - PyObject *exception, *value, *tb; - PyErr_Fetch(&exception, &value, &tb); - /* PyObject_IsSubclass() can recurse and therefore is - not safe (see test_bad_getattr in test.pickletester). */ - res = PyType_IsSubtype((PyTypeObject *)err, (PyTypeObject *)exc); - /* This function must not fail, so print the error here */ - if (res == -1) { - PyErr_WriteUnraisable(err); - res = 0; - } - PyErr_Restore(exception, value, tb); - return res; + return PyType_IsSubtype((PyTypeObject *)err, (PyTypeObject *)exc); } return err == exc; -- cgit v0.12