diff Python/pythonrun.c @ 39131:7c09b66f04bd legacy-trunk

Handle more memory allocation failures without crashing.
author Neal Norwitz <nnorwitz@gmail.com>
date Fri, 21 Jul 2006 07:59:47 +0000
parents aa85791f5991
children 12e973bdfeee
line wrap: on
line diff
--- a/Python/pythonrun.c	Fri Jul 21 07:59:02 2006 +0000
+++ b/Python/pythonrun.c	Fri Jul 21 07:59:47 2006 +0000
@@ -1204,8 +1204,12 @@
 {
 	PyObject *ret = NULL;
 	PyArena *arena = PyArena_New();
-	mod_ty mod = PyParser_ASTFromString(str, "<string>", start, flags,
-					    arena);
+	mod_ty mod;
+
+	if (arena == NULL)
+		return NULL;
+	
+	mod = PyParser_ASTFromString(str, "<string>", start, flags, arena);
 	if (mod != NULL)
 		ret = run_mod(mod, "<string>", globals, locals, flags, arena);
 	PyArena_Free(arena);
@@ -1218,8 +1222,13 @@
 {
 	PyObject *ret;
 	PyArena *arena = PyArena_New();
-	mod_ty mod = PyParser_ASTFromFile(fp, filename, start, 0, 0,
-					  flags, NULL, arena);
+	mod_ty mod;
+
+	if (arena == NULL)
+		return NULL;
+	
+	mod = PyParser_ASTFromFile(fp, filename, start, 0, 0,
+				   flags, NULL, arena);
 	if (mod == NULL) {
 		PyArena_Free(arena);
 		return NULL;