From 078f1814f1a4413a2a0fdb8cf4490ee0fc98ef34 Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Sun, 3 Dec 2017 11:12:20 +1000 Subject: bpo-32176: Set CO_NOFREE in the code object constructor (GH-4675) Previously, CO_NOFREE was set in the compiler, which meant it could end up being set incorrectly when code objects were created directly. Setting it in the constructor based on freevars and cellvars ensures it is always accurate, regardless of how the code object is defined. --- Python/compile.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'Python/compile.c') diff --git a/Python/compile.c b/Python/compile.c index a3ea60d07c..a3fcd53e9a 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -5273,11 +5273,6 @@ compute_code_flags(struct compiler *c) /* (Only) inherit compilerflags in PyCF_MASK */ flags |= (c->c_flags->cf_flags & PyCF_MASK); - if (!PyDict_GET_SIZE(c->u->u_freevars) && - !PyDict_GET_SIZE(c->u->u_cellvars)) { - flags |= CO_NOFREE; - } - return flags; } -- cgit v1.2.1