]> granicus.if.org Git - python/commitdiff
bpo-32365: Fix a reference leak when compile __debug__. (#4916)
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 18 Dec 2017 12:29:12 +0000 (14:29 +0200)
committerGitHub <noreply@github.com>
Mon, 18 Dec 2017 12:29:12 +0000 (14:29 +0200)
It was introduced in bpo-27169.

Python/compile.c

index 51c9a08162c8f08e504e1a8aeb65b562acf32bbf..392de40f20a854e1eeff17653938106555e38768 100644 (file)
@@ -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);