diff options
author | Sam Gross <colesbury@gmail.com> | 2024-08-07 13:36:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-07 13:36:19 (GMT) |
commit | 674a50ef2f8909c1c5d812e166bcc12ae6377908 (patch) | |
tree | 3903df98dc42864af8fc51c11b1d0507280ce267 /Python/generated_cases.c.h | |
parent | 013a0929750ed2b46ae990b59d02e3db84337474 (diff) | |
download | cpython-674a50ef2f8909c1c5d812e166bcc12ae6377908.zip cpython-674a50ef2f8909c1c5d812e166bcc12ae6377908.tar.gz cpython-674a50ef2f8909c1c5d812e166bcc12ae6377908.tar.bz2 |
gh-117139: Fix an incorrect borrow in bytecodes.c (#122318)
`_PyDict_SetItem_Take2` steals both the key (i.e., `sub`) and the value.
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r-- | Python/generated_cases.c.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index f670353..e560372 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -6625,16 +6625,17 @@ static_assert(INLINE_CACHE_ENTRIES_STORE_SUBSCR == 1, "incorrect cache size"); _PyStackRef value; _PyStackRef dict_st; - _PyStackRef sub_st; + _PyStackRef sub; /* Skip 1 cache entry */ - sub_st = stack_pointer[-1]; + sub = stack_pointer[-1]; dict_st = stack_pointer[-2]; value = stack_pointer[-3]; - PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st); PyObject *dict = PyStackRef_AsPyObjectBorrow(dict_st); DEOPT_IF(!PyDict_CheckExact(dict), STORE_SUBSCR); STAT_INC(STORE_SUBSCR, hit); - int err = _PyDict_SetItem_Take2((PyDictObject *)dict, sub, PyStackRef_AsPyObjectSteal(value)); + int err = _PyDict_SetItem_Take2((PyDictObject *)dict, + PyStackRef_AsPyObjectSteal(sub), + PyStackRef_AsPyObjectSteal(value)); PyStackRef_CLOSE(dict_st); if (err) goto pop_3_error; stack_pointer += -3; |