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/executor_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/executor_cases.c.h')
| -rw-r--r-- | Python/executor_cases.c.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index afc7786..4def11c 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -1105,20 +1105,21 @@ } case _STORE_SUBSCR_DICT: { - _PyStackRef sub_st; + _PyStackRef sub; _PyStackRef dict_st; _PyStackRef value; - 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); if (!PyDict_CheckExact(dict)) { UOP_STAT_INC(uopcode, miss); JUMP_TO_JUMP_TARGET(); } 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) JUMP_TO_ERROR(); stack_pointer += -3; |
