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.
diff --git a/Python/ceval.c b/Python/ceval.c
index dd7faf9..fb179d1 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2773,9 +2773,11 @@
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)) {