diff Python/pythonrun.c @ 39135:12e973bdfeee legacy-trunk

Fix more memory allocation issues found with failmalloc.
author Neal Norwitz <nnorwitz@gmail.com>
date Sat, 22 Jul 2006 16:20:49 +0000
parents 7c09b66f04bd
children 9a1288d8200f
line wrap: on
line diff
--- a/Python/pythonrun.c	Fri Jul 21 22:44:07 2006 +0000
+++ b/Python/pythonrun.c	Sat Jul 22 16:20:49 2006 +0000
@@ -746,6 +746,11 @@
 			ps2 = PyString_AsString(w);
 	}
 	arena = PyArena_New();
+	if (arena == NULL) {
+		Py_XDECREF(v);
+		Py_XDECREF(w);
+		return -1;
+	}
 	mod = PyParser_ASTFromFile(fp, filename,
 				   Py_single_input, ps1, ps2,
 				   flags, &errcode, arena);
@@ -1203,9 +1208,8 @@
 		  PyObject *locals, PyCompilerFlags *flags)
 {
 	PyObject *ret = NULL;
+	mod_ty mod;
 	PyArena *arena = PyArena_New();
-	mod_ty mod;
-
 	if (arena == NULL)
 		return NULL;
 	
@@ -1221,9 +1225,8 @@
 		  PyObject *locals, int closeit, PyCompilerFlags *flags)
 {
 	PyObject *ret;
+	mod_ty mod;
 	PyArena *arena = PyArena_New();
-	mod_ty mod;
-
 	if (arena == NULL)
 		return NULL;
 	
@@ -1291,8 +1294,12 @@
 		      PyCompilerFlags *flags)
 {
 	PyCodeObject *co;
+	mod_ty mod;
 	PyArena *arena = PyArena_New();
-	mod_ty mod = PyParser_ASTFromString(str, filename, start, flags, arena);
+	if (arena == NULL)
+		return NULL;
+
+	mod = PyParser_ASTFromString(str, filename, start, flags, arena);
 	if (mod == NULL) {
 		PyArena_Free(arena);
 		return NULL;
@@ -1311,8 +1318,12 @@
 Py_SymtableString(const char *str, const char *filename, int start)
 {
 	struct symtable *st;
+	mod_ty mod;
 	PyArena *arena = PyArena_New();
-	mod_ty mod = PyParser_ASTFromString(str, filename, start, NULL, arena);
+	if (arena == NULL)
+		return NULL;
+
+	mod = PyParser_ASTFromString(str, filename, start, NULL, arena);
 	if (mod == NULL) {
 		PyArena_Free(arena);
 		return NULL;