bpo-31091: Remove dead code in PyErr_GivenExceptionMatches(). (#2963)

https://github.com/python/cpython/commit/e4c06bcca358c6dcb6393a75a1589ff6a2d... commit: e4c06bcca358c6dcb6393a75a1589ff6a2d45cde branch: master author: scoder <stefan_ml@behnel.de> committer: Serhiy Storchaka <storchaka@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;
participants (1)
-
Serhiy Storchaka