Skip to content

Commit eac7403

Browse files
Pass the modules dict to _PyImport_FixupBuiltin().
1 parent 26bdb7e commit eac7403

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

Include/import.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,12 @@ PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObjectEx(PyObject *, PyObject *,
107107
PyObject *);
108108
PyAPI_FUNC(int) _PyImport_FixupBuiltin(
109109
PyObject *mod,
110-
const char *name /* UTF-8 encoded string */
110+
const char *name, /* UTF-8 encoded string */
111+
PyObject *modules
111112
);
112113
PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *, PyObject *);
114+
PyAPI_FUNC(int) _PyImport_FixupExtensionObjectEx(PyObject*, PyObject *,
115+
PyObject *, PyObject *);
113116

114117
struct _inittab {
115118
const char *name; /* ASCII encoded string */

Python/import.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,15 @@ int
554554
_PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
555555
PyObject *filename)
556556
{
557-
PyObject *modules, *dict, *key;
557+
PyObject *modules = PyImport_GetModuleDict();
558+
return _PyImport_FixupExtensionObjectEx(mod, name, filename, modules);
559+
}
560+
561+
int
562+
_PyImport_FixupExtensionObjectEx(PyObject *mod, PyObject *name,
563+
PyObject *filename, PyObject *modules)
564+
{
565+
PyObject *dict, *key;
558566
struct PyModuleDef *def;
559567
int res;
560568
if (extensions == NULL) {
@@ -571,7 +579,6 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
571579
PyErr_BadInternalCall();
572580
return -1;
573581
}
574-
modules = PyImport_GetModuleDict();
575582
if (PyDict_SetItem(modules, name, mod) < 0)
576583
return -1;
577584
if (_PyState_AddModule(mod, def) < 0) {
@@ -603,14 +610,14 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
603610
}
604611

605612
int
606-
_PyImport_FixupBuiltin(PyObject *mod, const char *name)
613+
_PyImport_FixupBuiltin(PyObject *mod, const char *name, PyObject *modules)
607614
{
608615
int res;
609616
PyObject *nameobj;
610617
nameobj = PyUnicode_InternFromString(name);
611618
if (nameobj == NULL)
612619
return -1;
613-
res = _PyImport_FixupExtensionObject(mod, nameobj, nameobj);
620+
res = _PyImport_FixupExtensionObjectEx(mod, nameobj, nameobj, modules);
614621
Py_DECREF(nameobj);
615622
return res;
616623
}

Python/pylifecycle.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ void _Py_InitializeCore(const _PyCoreConfig *config)
688688
Py_FatalError("Py_InitializeCore: can't initialize sys dict");
689689
Py_INCREF(interp->sysdict);
690690
PyDict_SetItemString(interp->sysdict, "modules", modules);
691-
_PyImport_FixupBuiltin(sysmod, "sys");
691+
_PyImport_FixupBuiltin(sysmod, "sys", modules);
692692

693693
/* Init Unicode implementation; relies on the codec registry */
694694
if (_PyUnicode_Init() < 0)
@@ -700,7 +700,7 @@ void _Py_InitializeCore(const _PyCoreConfig *config)
700700
bimod = _PyBuiltin_Init();
701701
if (bimod == NULL)
702702
Py_FatalError("Py_InitializeCore: can't initialize builtins modules");
703-
_PyImport_FixupBuiltin(bimod, "builtins");
703+
_PyImport_FixupBuiltin(bimod, "builtins", modules);
704704
interp->builtins = PyModule_GetDict(bimod);
705705
if (interp->builtins == NULL)
706706
Py_FatalError("Py_InitializeCore: can't initialize builtins dict");

0 commit comments

Comments
 (0)