Re: [Python-Dev] nested classes leaking in compiler On Fri, Mar 28, 2008 at 11:50 AM, Georg Brandl  wrote:
> While preparing the Python-AST compilation patch, I noticed that each
>  class nested in a class leaks one reference (2.5 and trunk).
>
>  It wasn't found by regrtest -R because it only happens on compiling,
>  and it seems that all snippets compiled during the tests as opposed to
>  on import didn't contain such a construct.
>
>  The AST generation stage is fine, the leak happens somehwere
>  after that (I suspect the symtable code). It would be nice if someone
>  who understands more about that code than I do could fix this.

The problem is actually in compile.c, in compiler_class():
Each compilation scope holds the name of the enclosing class (for
__name mangling).
In the case of nested classes, the inner scope is first initialized
with the outer class name, then replaced with the inner class name.
But a Py_XDECREF(c->u->u_private) is missing here...

I will submit the correction in a few hours.

-- 
Amaury Forgeot d'Arc
_______________________________________________
Python-Dev mailing list
zvllln-eum@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/python-dev%40tangomu.com


