[Python-checkins] bpo-31091: Remove dead code in PyErr_GivenExceptionMatches(). (#2963)

Serhiy Storchaka webhook-mailer at python.org
Mon Jul 31 16:27:51 EDT 2017


https://github.com/python/cpython/commit/e4c06bcca358c6dcb6393a75a1589ff6a2d45cde
commit: e4c06bcca358c6dcb6393a75a1589ff6a2d45cde
branch: master
author: scoder <stefan_ml at behnel.de>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2017-07-31T23:27:46+03:00
summary:

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.

files:
M Python/errors.c

diff --git a/Python/errors.c b/Python/errors.c
index 3785e6981c6..261dd7b27cb 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;



More information about the Python-checkins mailing list