]> granicus.if.org Git - python/commitdiff
SF patch 1025636: Check for NULL returns in compile.c:com_import_stmt
authorJeremy Hylton <jeremy@alum.mit.edu>
Sun, 7 Nov 2004 14:04:00 +0000 (14:04 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Sun, 7 Nov 2004 14:04:00 +0000 (14:04 +0000)
There is no test for this change, because there is no way to provoke memory errors on demand.  Test suite passes, though.

Python/compile.c

index be81ba0b1abb93484e2b13b983a8e485c912cb8f..ea325ff0698a48991883ae10973dca6e58e788d2 100644 (file)
@@ -3606,10 +3606,20 @@ com_import_stmt(struct compiling *c, node *n)
                        }
                        REQ(nn, import_as_names);
                        tup = PyTuple_New((NCH(nn) + 1) / 2);
-                       for (i = 0; i < NCH(nn); i += 2)
-                               PyTuple_SET_ITEM(tup, i / 2,
-                                       PyString_FromString(STR(
-                                               CHILD(CHILD(nn, i), 0))));
+            for (i = 0; i < NCH(nn); i += 2) {
+                PyObject *s = PyString_FromString(
+                    STR(CHILD(CHILD(nn, i), 0)));
+                if (s == NULL) {
+                    Py_CLEAR(tup);
+                    break;
+                } else
+                    PyTuple_SET_ITEM(tup, i / 2, s);
+            }
+            if (tup == NULL) {
+                /* Assume that failue above was MemoryError */
+                com_error(c, PyExc_MemoryError, "");
+                return;
+            }
                }
                com_addoparg(c, LOAD_CONST, com_addconst(c, tup));
                Py_DECREF(tup);