diff Python/import.c @ 78603:ba1c48f8b571 2.7

Issue #15604: Update uses of PyObject_IsTrue() to check for and handle errors correctly. Patch by Serhiy Storchaka.
author Antoine Pitrou <solipsis@pitrou.net>
date Wed, 15 Aug 2012 23:16:51 +0200
parents bdd1b2228c14
children 321414874b26
line wrap: on
line diff
--- a/Python/import.c	Wed Aug 15 21:37:19 2012 +0200
+++ b/Python/import.c	Wed Aug 15 23:16:51 2012 +0200
@@ -1043,7 +1043,10 @@
                 name, pathname);
         if (cpathname) {
             PyObject *ro = PySys_GetObject("dont_write_bytecode");
-            if (ro == NULL || !PyObject_IsTrue(ro))
+            int b = (ro == NULL) ? 0 : PyObject_IsTrue(ro);
+            if (b < 0)
+                goto error_exit;
+            if (!b)
                 write_compiled_module(co, cpathname, &st);
         }
     }
@@ -2200,7 +2203,13 @@
     }
 
     if (fromlist != NULL) {
-        if (fromlist == Py_None || !PyObject_IsTrue(fromlist))
+        int b = (fromlist == Py_None) ? 0 : PyObject_IsTrue(fromlist);
+        if (b < 0) {
+            Py_DECREF(tail);
+            Py_DECREF(head);
+            goto error_exit;
+        }
+        if (!b)
             fromlist = NULL;
     }