Commit 8432d86b authored by Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

Fix a reference leak found by Georg, when compiling a class nested in another class.

Test is run with "regrtest.py -R:: test_compile"

Backport of r62015
parent 198e3537
......@@ -398,6 +398,10 @@ if 1:
del d[..., ...]
self.assertEqual((Ellipsis, Ellipsis) in d, False)
def test_nested_classes(self):
# Verify that it does not leak
compile("class A:\n class B: pass", 'tmp', 'exec')
def test_main():
test_support.run_unittest(TestSpecifics)
......
......@@ -12,6 +12,9 @@ What's New in Python 2.5.3?
Core and builtins
-----------------
- The compilation of a class nested in another class used to leak one
reference on the outer class name.
- Issue #1477: With narrow Unicode builds, the unicode escape sequence
\Uxxxxxxxx did not accept values outside the Basic Multilingual Plane. This
affected raw unicode literals and the 'raw-unicode-escape' codec. Now
......
......@@ -2061,6 +2061,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__");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment