Fix memory leak in exec statement with code object -- the None returned

by PyEval_EvalCode() on success was never DECREF'ed.

Fix by Bernhard Herzog.
This commit is contained in:
Guido van Rossum 1997-11-11 16:29:38 +00:00
parent 3120bc3888
commit dfed725e2c
1 changed files with 4 additions and 2 deletions

View File

@ -2773,9 +2773,11 @@ exec_statement(f, prog, globals, locals)
if (PyDict_GetItemString(globals, "__builtins__") == NULL)
PyDict_SetItemString(globals, "__builtins__", f->f_builtins);
if (PyCode_Check(prog)) {
if (PyEval_EvalCode((PyCodeObject *) prog,
globals, locals) == NULL)
v = PyEval_EvalCode((PyCodeObject *) prog,
globals, locals);
if (v == NULL)
return -1;
Py_DECREF(v);
return 0;
}
if (PyFile_Check(prog)) {