Skip to content

Commit 1f6518d

Browse files
committed
Grab builtins dict from module
1 parent a0a9184 commit 1f6518d

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

Python/bltinmodule.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,18 @@ builtin___lazy_import___impl(PyObject *module, PyObject *name,
318318
locals = globals;
319319
}
320320

321-
if (PyMapping_GetOptionalItem(globals, &_Py_ID(__builtins__), &builtins) < 0) {
321+
builtins = PyMapping_GetItemString(globals, "__builtins__");
322+
if (builtins == NULL) {
322323
PyErr_SetString(PyExc_ValueError, "unable to get builtins for lazy import");
323324
return NULL;
325+
} else if (PyModule_Check(builtins)) {
326+
PyObject *builtins_dict = Py_XNewRef(PyModule_GetDict(builtins));
327+
if (builtins_dict == NULL) {
328+
PyErr_SetString(PyExc_AttributeError, "builtins module has no dict");
329+
return NULL;
330+
}
331+
Py_DECREF(builtins);
332+
builtins = builtins_dict;
324333
}
325334

326335
PyObject *res = _PyImport_LazyImportModuleLevelObject(tstate, name, builtins,

0 commit comments

Comments
 (0)