summaryrefslogtreecommitdiff
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-07-21 07:59:47 +0000
committerNeal Norwitz <nnorwitz@gmail.com>2006-07-21 07:59:47 +0000
commitd12bd012a6a4729b5a77c1019ca9da4e9d1b7e3e (patch)
treef80aa311a6efe044d51c07f42e734b750be129be /Python/pythonrun.c
parent33722aec5755f1fa8c0660094639174dbbeefb1d (diff)
downloadcpython-git-d12bd012a6a4729b5a77c1019ca9da4e9d1b7e3e.tar.gz
Handle more memory allocation failures without crashing.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 95a337269b..bc832195ec 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1204,8 +1204,12 @@ PyRun_StringFlags(const char *str, int start, PyObject *globals,
{
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 @@ PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals,
{
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;