• Guido van Rossum's avatar
    Charles Waldman writes: · 25826c93
    Guido van Rossum yazdı
    """
    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]
    25826c93
ceval.c 65.7 KB