summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-06-09 17:23:45 (GMT)
committerGitHub <noreply@github.com>2023-06-09 17:23:45 (GMT)
commit65404930bdfcc3755eee70673ed0f592e5fcb37e (patch)
treea8ee9c9090b5be1865e5a70a8095840a3cb63ec8
parentbc365da711f8c8039f10d75572af674cf82d5b20 (diff)
downloadcpython-65404930bdfcc3755eee70673ed0f592e5fcb37e.zip
cpython-65404930bdfcc3755eee70673ed0f592e5fcb37e.tar.gz
cpython-65404930bdfcc3755eee70673ed0f592e5fcb37e.tar.bz2
[3.12] gh-105375: Improve error handling in compiler_enter_scope() (GH-105494) (#105581)
(cherry picked from commit 6c832ddcf28187f86100c790afb16a0223d945d0) Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-06-08-09-54-37.gh-issue-105375.kqKT3E.rst1
-rw-r--r--Python/compile.c6
2 files changed, 6 insertions, 1 deletions
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
index 0000000..b4d3a1a
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-06-08-09-54-37.gh-issue-105375.kqKT3E.rst
@@ -0,0 +1 @@
+Fix bug in the compiler where an exception could end up being overwritten.
diff --git a/Python/compile.c b/Python/compile.c
index 32eda4d..f593e95 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -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;
}