Skip to content

Commit fc4a232

Browse files
committed
gh-152298: Bind lazy import owner before storing
1 parent 8250d82 commit fc4a232

4 files changed

Lines changed: 48 additions & 48 deletions

File tree

Modules/_testinternalcapi/test_cases.c.h

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

Python/bytecodes.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,12 +2006,10 @@ dummy_func(
20062006
}
20072007
if (PyDict_CheckExact(ns)) {
20082008
PyObject *value = PyStackRef_AsPyObjectBorrow(v);
2009-
err = PyDict_SetItem(ns, name, value);
2010-
if (err == 0 && ns == GLOBALS() &&
2011-
PyLazyImport_CheckExact(value))
2012-
{
2009+
if (ns == GLOBALS() && PyLazyImport_CheckExact(value)) {
20132010
_PyLazyImport_BindGlobal(tstate, value, ns, name);
20142011
}
2012+
err = PyDict_SetItem(ns, name, value);
20152013
}
20162014
else {
20172015
err = PyObject_SetItem(ns, name, PyStackRef_AsPyObjectBorrow(v));
@@ -2196,10 +2194,10 @@ dummy_func(
21962194
inst(STORE_GLOBAL, (v --)) {
21972195
PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
21982196
PyObject *value = PyStackRef_AsPyObjectBorrow(v);
2199-
int err = PyDict_SetItem(GLOBALS(), name, value);
2200-
if (err == 0 && PyLazyImport_CheckExact(value)) {
2197+
if (PyLazyImport_CheckExact(value)) {
22012198
_PyLazyImport_BindGlobal(tstate, value, GLOBALS(), name);
22022199
}
2200+
int err = PyDict_SetItem(GLOBALS(), name, value);
22032201
PyStackRef_CLOSE(v);
22042202
ERROR_IF(err);
22052203
}

Python/executor_cases.c.h

Lines changed: 20 additions & 14 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: 12 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)