Skip to content

Commit 61614b0

Browse files
committed
gh-152298: Restore post-store lazy owner binding
1 parent fc4a232 commit 61614b0

4 files changed

Lines changed: 48 additions & 48 deletions

File tree

Modules/_testinternalcapi/test_cases.c.h

Lines changed: 14 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/bytecodes.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,10 +2006,12 @@ dummy_func(
20062006
}
20072007
if (PyDict_CheckExact(ns)) {
20082008
PyObject *value = PyStackRef_AsPyObjectBorrow(v);
2009-
if (ns == GLOBALS() && PyLazyImport_CheckExact(value)) {
2009+
err = PyDict_SetItem(ns, name, value);
2010+
if (err == 0 && ns == GLOBALS() &&
2011+
PyLazyImport_CheckExact(value))
2012+
{
20102013
_PyLazyImport_BindGlobal(tstate, value, ns, name);
20112014
}
2012-
err = PyDict_SetItem(ns, name, value);
20132015
}
20142016
else {
20152017
err = PyObject_SetItem(ns, name, PyStackRef_AsPyObjectBorrow(v));
@@ -2194,10 +2196,10 @@ dummy_func(
21942196
inst(STORE_GLOBAL, (v --)) {
21952197
PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
21962198
PyObject *value = PyStackRef_AsPyObjectBorrow(v);
2197-
if (PyLazyImport_CheckExact(value)) {
2199+
int err = PyDict_SetItem(GLOBALS(), name, value);
2200+
if (err == 0 && PyLazyImport_CheckExact(value)) {
21982201
_PyLazyImport_BindGlobal(tstate, value, GLOBALS(), name);
21992202
}
2200-
int err = PyDict_SetItem(GLOBALS(), name, value);
22012203
PyStackRef_CLOSE(v);
22022204
ERROR_IF(err);
22032205
}

Python/executor_cases.c.h

Lines changed: 14 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/generated_cases.c.h

Lines changed: 14 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)