Charles Waldman writes:
authorGuido van Rossum <guido@python.org>
Fri, 21 Apr 2000 21:17:39 +0000 (21:17 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 21 Apr 2000 21:17:39 +0000 (21:17 +0000)
commit25826c93c4cf1fcac537e6cded5ce986c751134e
tree58061e8b687c1fbb76c77d1926884d053550c8b4
parent5ce78f8e4e2522ab59f4c2c35a5a784dcc2dafc8
Charles Waldman writes:

"""
Running "test_extcall" repeatedly results in memory leaks.

One of these can't be fixed (at least not easily!), it happens since
this code:

def saboteur(**kw):
    kw['x'] = locals()
d = {}
saboteur(a=1, **d)

creates a circular reference - d['x']['d']==d

The others are due to some missing decrefs in ceval.c, fixed by the
patch attached below.

Note:  I originally wrote this without the "goto", just adding the
missing decref's where needed.  But I think the goto is justified in
keeping the executable code size of ceval as small as possible.
"""

[I think the circular reference is more like kw['x']['kw'] == kw. --GvR]
Python/ceval.c