]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-105375: Improve error handling in compiler_enter_scope() (GH-105494) (...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 9 Jun 2023 17:23:45 +0000 (10:23 -0700)
committerGitHub <noreply@github.com>
Fri, 9 Jun 2023 17:23:45 +0000 (17:23 +0000)
(cherry picked from commit 6c832ddcf28187f86100c790afb16a0223d945d0)

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
Misc/NEWS.d/next/Core and Builtins/2023-06-08-09-54-37.gh-issue-105375.kqKT3E.rst [new file with mode: 0644]
Python/compile.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-06-08-09-54-37.gh-issue-105375.kqKT3E.rst b/Misc/NEWS.d/next/Core and Builtins/2023-06-08-09-54-37.gh-issue-105375.kqKT3E.rst
new file mode 100644 (file)
index 0000000..b4d3a1a
--- /dev/null
@@ -0,0 +1 @@
+Fix bug in the compiler where an exception could end up being overwritten.
index 32eda4d407ea124c4e7869012173938b412a34b2..f593e957caae97c808797d50f3baab7efef6e0f7 100644 (file)
@@ -1252,8 +1252,12 @@ compiler_enter_scope(struct compiler *c, identifier name,
     }
     u->u_metadata.u_name = Py_NewRef(name);
     u->u_metadata.u_varnames = list2dict(u->u_ste->ste_varnames);
+    if (!u->u_metadata.u_varnames) {
+        compiler_unit_free(u);
+        return ERROR;
+    }
     u->u_metadata.u_cellvars = dictbytype(u->u_ste->ste_symbols, CELL, DEF_COMP_CELL, 0);
-    if (!u->u_metadata.u_varnames || !u->u_metadata.u_cellvars) {
+    if (!u->u_metadata.u_cellvars) {
         compiler_unit_free(u);
         return ERROR;
     }