summaryrefslogtreecommitdiffstats
path: root/Python/generated_cases.c.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2023-08-26 23:22:40 (GMT)
committerGitHub <noreply@github.com>2023-08-26 23:22:40 (GMT)
commitbbdd8895a5aced4cd4e66a5c6e3471636f28df6b (patch)
treec0c172d6ce0fe61d0272f853c8b1764d0f8437b3 /Python/generated_cases.c.h
parent208741cc3098c905914ecdc1110bfd805d4bb874 (diff)
downloadcpython-bbdd8895a5aced4cd4e66a5c6e3471636f28df6b.zip
cpython-bbdd8895a5aced4cd4e66a5c6e3471636f28df6b.tar.gz
cpython-bbdd8895a5aced4cd4e66a5c6e3471636f28df6b.tar.bz2
[3.12] gh-108487: Change assert that should've been DEOPT_IF (#108509)
* Remove assert that should've been DEOPT_IF The assert(method != NULL) in CALL_NO_KW_LIST_APPEND is wrong -- this condition should lead to a deoptimization, and indeed there is a DEOPT_IF two lines later that will trigger if method == NULL. This would crash in a devious repro scenario (first seen live in boto3 tests) when compiled with assertions enabled. In a production version there is no crash, so impact is limited. (The crash also appears in main; I will prepare a separate PR.) * Add back a different assert(self != NULL) * 📜🤖 Added by blurb_it. --------- Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r--Python/generated_cases.c.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index b0a363c..a3c0495 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -4248,9 +4248,9 @@
#line 2993 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 1);
- assert(method != NULL);
PyInterpreterState *interp = _PyInterpreterState_GET();
DEOPT_IF(method != interp->callable_cache.list_append, CALL);
+ assert(self != NULL);
DEOPT_IF(!PyList_Check(self), CALL);
STAT_INC(CALL, hit);
if (_PyList_AppendTakeRef((PyListObject *)self, args[0]) < 0) {