diff Python/_warnings.c @ 86801:9b37fbda9043

Issue #19437: Fix get_filter() from _warnings, don't call PyObject_IsSubclass() with an exception set
author Victor Stinner <victor.stinner@gmail.com>
date Thu, 31 Oct 2013 14:46:00 +0100
parents 1787277915e9
children e035b4656088
line wrap: on
line diff
--- a/Python/_warnings.c	Thu Oct 31 05:55:31 2013 -0700
+++ b/Python/_warnings.c	Thu Oct 31 14:46:00 2013 +0100
@@ -144,11 +144,19 @@
         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))