SF patch 1025636: Check for NULL returns in compile.c:com_import_stmt
There is no test for this change, because there is no way to provoke memory errors on demand. Test suite passes, though.
diff --git a/Python/compile.c b/Python/compile.c
index be81ba0..ea325ff 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3606,10 +3606,20 @@
}
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);