On Fri, Mar 28, 2008 at 11:50 AM, Georg Brandl <[EMAIL PROTECTED]> 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 Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com