From: Victor Stinner Date: Thu, 31 Oct 2013 13:46:00 +0000 (+0100) Subject: Issue #19437: Fix get_filter() from _warnings, don't call PyObject_IsSubclass() X-Git-Tag: v3.4.0b1~454 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cd04aa1b2ddf27d089d5837c0d2e3ba34b02c5c;p=thirdparty%2FPython%2Fcpython.git Issue #19437: Fix get_filter() from _warnings, don't call PyObject_IsSubclass() with an exception set --- diff --git a/Python/_warnings.c b/Python/_warnings.c index 8d9666afcc77..74ac8c65bfff 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -144,11 +144,19 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno, ln_obj = PyTuple_GET_ITEM(tmp_item, 4); good_msg = check_matched(msg, text); + if (good_msg == -1) + return NULL; + good_mod = check_matched(mod, module); + if (good_mod == -1) + return NULL; + is_subclass = PyObject_IsSubclass(category, cat); + if (is_subclass == -1) + return NULL; + ln = PyLong_AsSsize_t(ln_obj); - if (good_msg == -1 || good_mod == -1 || is_subclass == -1 || - (ln == -1 && PyErr_Occurred())) + if (ln == -1 && PyErr_Occurred()) return NULL; if (good_msg && is_subclass && good_mod && (ln == 0 || lineno == ln))