summaryrefslogtreecommitdiffstats
path: root/Objects/cellobject.c
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-03-13 01:58:22 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-03-13 01:58:22 (GMT)
commit30c9f3991cfb6a8179ea5dcf15fe17030dfbad05 (patch)
tree21d647853b4e5d0c71bbfd9a9a27ad51e967c90c /Objects/cellobject.c
parent93fe96a3c82b11b2bccef29d1f4a422a945e4cdd (diff)
downloadcpython-30c9f3991cfb6a8179ea5dcf15fe17030dfbad05.zip
cpython-30c9f3991cfb6a8179ea5dcf15fe17030dfbad05.tar.gz
cpython-30c9f3991cfb6a8179ea5dcf15fe17030dfbad05.tar.bz2
Variety of small INC/DECREF patches that fix reported memory leaks
with free variables. Thanks to Martin v. Loewis for finding two of the problems. This fixes SF buf 405583. There is also a C API change: PyFrame_New() is reverting to its pre-2.1 signature. The change introduced by nested scopes was a mistake. XXX Is this okay between beta releases? cell_clear(), the GC helper, must decref its reference to break cycles. frame_dealloc() must dealloc all cell vars and free vars in addition to locals. eval_code2() setup code must INCREF cells it copies out of the closure. The STORE_DEREF opcode implementation must DECREF the object it passes to PyCell_Set().
Diffstat (limited to 'Objects/cellobject.c')
-rw-r--r--Objects/cellobject.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/Objects/cellobject.c b/Objects/cellobject.c
index d9ecfd7..66fc8d1 100644
--- a/Objects/cellobject.c
+++ b/Objects/cellobject.c
@@ -83,6 +83,7 @@ cell_traverse(PyCellObject *op, visitproc visit, void *arg)
static int
cell_clear(PyCellObject *op)
{
+ Py_XDECREF(op->ob_ref);
op->ob_ref = NULL;
return 0;
}