Fix global membership in LOAD_NAME

This commit is contained in:
Pablo Galindo 2025-10-07 11:41:19 +01:00
parent 5ff0dd2363
commit 214b2543ee
4 changed files with 148044 additions and 0 deletions

View file

@ -1799,6 +1799,9 @@ dummy_func(
ERROR_IF(v_o == NULL); ERROR_IF(v_o == NULL);
if (PyLazyImport_CheckExact(v_o)) { if (PyLazyImport_CheckExact(v_o)) {
PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o); PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
if (l_v != NULL && PyDict_SetItem(GLOBALS(), name, l_v) < 0) {
JUMP_TO_LABEL(error);
}
Py_DECREF(v_o); Py_DECREF(v_o);
v_o = l_v; v_o = l_v;
ERROR_IF(v_o == NULL); ERROR_IF(v_o == NULL);

148031
Python/deepfreeze/deepfreeze.c Normal file

File diff suppressed because one or more lines are too long

View file

@ -2461,6 +2461,11 @@
if (PyLazyImport_CheckExact(v_o)) { if (PyLazyImport_CheckExact(v_o)) {
_PyFrame_SetStackPointer(frame, stack_pointer); _PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o); PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
if (l_v != NULL && PyDict_SetItem(GLOBALS(), name, l_v) < 0) {
JUMP_TO_LABEL(error);
}
_PyFrame_SetStackPointer(frame, stack_pointer);
Py_DECREF(v_o); Py_DECREF(v_o);
stack_pointer = _PyFrame_GetStackPointer(frame); stack_pointer = _PyFrame_GetStackPointer(frame);
v_o = l_v; v_o = l_v;

View file

@ -9409,6 +9409,11 @@
if (PyLazyImport_CheckExact(v_o)) { if (PyLazyImport_CheckExact(v_o)) {
_PyFrame_SetStackPointer(frame, stack_pointer); _PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o); PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
if (l_v != NULL && PyDict_SetItem(GLOBALS(), name, l_v) < 0) {
JUMP_TO_LABEL(error);
}
_PyFrame_SetStackPointer(frame, stack_pointer);
Py_DECREF(v_o); Py_DECREF(v_o);
stack_pointer = _PyFrame_GetStackPointer(frame); stack_pointer = _PyFrame_GetStackPointer(frame);
v_o = l_v; v_o = l_v;