diff options
author | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-03-28 20:30:50 (GMT) |
---|---|---|
committer | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-03-28 20:30:50 (GMT) |
commit | 69b747b7358780c84d1cac1317bfb7d5baa4e6e3 (patch) | |
tree | 676314dd91dd7a5ec16f678d30d1643097c1b253 | |
parent | aa5fbdd71a6dff5685b7b3b93a8162fcd83e8804 (diff) | |
download | cpython-69b747b7358780c84d1cac1317bfb7d5baa4e6e3.zip cpython-69b747b7358780c84d1cac1317bfb7d5baa4e6e3.tar.gz cpython-69b747b7358780c84d1cac1317bfb7d5baa4e6e3.tar.bz2 |
Fix a reference leak found by Georg, when compiling a class nested in another class.
Now "regrtest.py -R:: test_compile" is satisfied.
Will backport.
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Python/compile.c | 1 |
2 files changed, 4 insertions, 0 deletions
@@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 2? Core and builtins ----------------- +- The compilation of a class nested in another class used to leak one + reference on the outer class name. + - Patch #1810: compile() can now compile _ast trees as returned by compile(..., PyCF_ONLY_AST). diff --git a/Python/compile.c b/Python/compile.c index 4f55b36..ae1f0da 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1431,6 +1431,7 @@ compiler_class(struct compiler *c, stmt_ty s) if (!compiler_enter_scope(c, s->v.ClassDef.name, (void *)s, s->lineno)) return 0; + Py_XDECREF(c->u->u_private); c->u->u_private = s->v.ClassDef.name; Py_INCREF(c->u->u_private); str = PyString_InternFromString("__name__"); |