From f9880bfd5f3a6dade40c5b9dd4b4ff477b037c20 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Tue, 23 Sep 2025 18:51:46 +0100 Subject: [PATCH] More fixes --- Python/bytecodes.c | 6 ++++-- Python/executor_cases.c.h | 4 +++- Python/generated_cases.c.h | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index c4df9680345..ea28853e1de 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -1835,7 +1835,9 @@ dummy_func( PyObject *res_o = PyStackRef_AsPyObjectBorrow(*res); if (PyLazyImport_CheckExact(res_o)) { PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, res_o); - Py_DECREF(res_o); + if (PyDict_SetItem(GLOBALS(), name, l_v) < 0) { + JUMP_TO_LABEL(error); + } res_o = l_v; PyStackRef_CLOSE(res[0]); ERROR_IF(res_o == NULL); @@ -2948,7 +2950,7 @@ dummy_func( PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2); PyObject *res_o; if (!(oparg & 0x02)) { - res_o = _PyEval_LazyImportName(tstate, BUILTINS(), GLOBALS(), LOCALS(), name, + res_o = _PyEval_LazyImportName(tstate, BUILTINS(), GLOBALS(), LOCALS(), name, PyStackRef_AsPyObjectBorrow(fromlist), PyStackRef_AsPyObjectBorrow(level), oparg & 0x01); diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 3c42cdb6fb5..ae48e8e41c1 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -2490,8 +2490,10 @@ if (PyLazyImport_CheckExact(res_o)) { _PyFrame_SetStackPointer(frame, stack_pointer); PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, res_o); - Py_DECREF(res_o); stack_pointer = _PyFrame_GetStackPointer(frame); + if (PyDict_SetItem(GLOBALS(), name, l_v) < 0) { + JUMP_TO_LABEL(error); + } res_o = l_v; _PyFrame_SetStackPointer(frame, stack_pointer); PyStackRef_CLOSE(res[0]); diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 74bf34fa886..509a56647ae 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -9193,10 +9193,10 @@ if (PyLazyImport_CheckExact(res_o)) { _PyFrame_SetStackPointer(frame, stack_pointer); PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, res_o); - if(PyDict_SetItem(GLOBALS(), name, l_v) < 0) { + stack_pointer = _PyFrame_GetStackPointer(frame); + if (PyDict_SetItem(GLOBALS(), name, l_v) < 0) { JUMP_TO_LABEL(error); } - stack_pointer = _PyFrame_GetStackPointer(frame); res_o = l_v; _PyFrame_SetStackPointer(frame, stack_pointer); PyStackRef_CLOSE(res[0]);