[Python-checkins] bpo-32365: Fix a reference leak when compile __debug__. (#4916)

Serhiy Storchaka webhook-mailer at python.org
Mon Dec 18 07:29:17 EST 2017


https://github.com/python/cpython/commit/bd6ec4d79e8575df3d08f8a89ba721930032714c
commit: bd6ec4d79e8575df3d08f8a89ba721930032714c
branch: master
author: Serhiy Storchaka <storchaka at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-12-18T14:29:12+02:00
summary:

bpo-32365: Fix a reference leak when compile __debug__. (#4916)

It was introduced in bpo-27169.

files:
M Python/compile.c

diff --git a/Python/compile.c b/Python/compile.c
index 51c9a08162c..392de40f20a 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3094,10 +3094,6 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
     PyObject *mangled;
     /* XXX AugStore isn't used anywhere! */
 
-    mangled = _Py_Mangle(c->u->u_private, name);
-    if (!mangled)
-        return 0;
-
     assert(!_PyUnicode_EqualToASCIIString(name, "None") &&
            !_PyUnicode_EqualToASCIIString(name, "True") &&
            !_PyUnicode_EqualToASCIIString(name, "False"));
@@ -3107,6 +3103,10 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
         return 1;
     }
 
+    mangled = _Py_Mangle(c->u->u_private, name);
+    if (!mangled)
+        return 0;
+
     op = 0;
     optype = OP_NAME;
     scope = PyST_GetScope(c->u->u_ste, mangled);



More information about the Python-checkins mailing list