summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-12-06 21:28:18 (GMT)
committerGuido van Rossum <guido@python.org>2001-12-06 21:28:18 (GMT)
commit35974fbf31fd2e2a64fd13a6565f1478ed8cfa6e (patch)
tree297f96e39f954957b203d5ba2767252774dd5b43 /Python/ceval.c
parentffa260fb54a02cd3446159f627828fcf949ddb42 (diff)
downloadcpython-35974fbf31fd2e2a64fd13a6565f1478ed8cfa6e.zip
cpython-35974fbf31fd2e2a64fd13a6565f1478ed8cfa6e.tar.gz
cpython-35974fbf31fd2e2a64fd13a6565f1478ed8cfa6e.tar.bz2
Fix for SF bug #489671 (Neil Norwitz): memory leak in test_richcmp.
Had nothing to do with rich comparisons -- some stack cleanup code was lost as a result of merging in Neil Schemenauer's generators patch. Reinserted the stack cleanup code, skipping it when yielding.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 6def422..29d7082 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2296,6 +2296,14 @@ eval_frame(PyFrameObject *f)
} /* main loop */
+ if (why != WHY_YIELD) {
+ /* Pop remaining stack entries -- but when yielding */
+ while (!EMPTY()) {
+ v = POP();
+ Py_XDECREF(v);
+ }
+ }
+
if (why != WHY_RETURN && why != WHY_YIELD)
retval = NULL;