summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Python
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tools/python3/Python')
-rw-r--r--contrib/tools/python3/Python/import.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/contrib/tools/python3/Python/import.c b/contrib/tools/python3/Python/import.c
index 8f8d5c25cb5..fe70169202c 100644
--- a/contrib/tools/python3/Python/import.c
+++ b/contrib/tools/python3/Python/import.c
@@ -1388,6 +1388,7 @@ is_builtin(PyObject *name)
static PyObject*
create_builtin(PyThreadState *tstate, PyObject *name, PyObject *spec)
{
+ const char *oldcontext, *newcontext;
PyObject *mod = import_find_extension(tstate, name, name);
if (mod || _PyErr_Occurred(tstate)) {
return mod;
@@ -1401,7 +1402,13 @@ create_builtin(PyThreadState *tstate, PyObject *name, PyObject *spec)
mod = PyImport_AddModuleObject(name);
return Py_XNewRef(mod);
}
+ newcontext = PyUnicode_AsUTF8(name);
+ if (newcontext == NULL) {
+ Py_RETURN_NONE;
+ }
+ oldcontext = _PyImport_SwapPackageContext(newcontext);
mod = _PyImport_InitFunc_TrampolineCall(*p->initfunc);
+ _PyImport_SwapPackageContext(oldcontext);
if (mod == NULL) {
return NULL;
}