https://github.com/python/cpython/commit/9b5e80000ee179eb028841709f10dac9af7c36e7
commit: 9b5e80000ee179eb028841709f10dac9af7c36e7
branch: main
author: Eric Snow <[email protected]>
committer: ericsnowcurrently <[email protected]>
date: 2025-05-27T15:42:24Z
summary:
gh-132775: Always Set __builtins__ In _PyFunction_FromXIData() (gh-134758)
This is a small follow-up to gh-133481. There's a corner case
in the behavior of PyImport_ImportModuleAttrString(), where
it expects __builtins__ to be set if __globals__ is set.
files:
M Python/crossinterp_data_lookup.h
diff --git a/Python/crossinterp_data_lookup.h b/Python/crossinterp_data_lookup.h
index 88eb41da89ee40..b16f38b847fc66 100644
--- a/Python/crossinterp_data_lookup.h
+++ b/Python/crossinterp_data_lookup.h
@@ -701,6 +701,14 @@ _PyFunction_FromXIData(_PyXIData_t *xidata)
Py_DECREF(code);
return NULL;
}
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (PyDict_SetItem(globals, &_Py_ID(__builtins__),
+ tstate->interp->builtins) < 0)
+ {
+ Py_DECREF(code);
+ Py_DECREF(globals);
+ return NULL;
+ }
PyObject *func = PyFunction_New(code, globals);
Py_DECREF(code);
Py_DECREF(globals);
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]