From 3c61c3525f4cf23acae95c5229abd10fe0998d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lemburg?= Date: Fri, 9 Feb 2001 19:40:15 +0000 Subject: [PATCH] This modified version of a patch by Thomas Heller allows __import__ hooks to take over the Python import machinery at a very early stage in the Python startup phase. If there are still places in the Python interpreter which need to bypass the __import__ hook, these places must now use PyImport_ImportModuleEx() instead. So far no other places than in the import mechanism itself have been identified. --- Python/import.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Python/import.c b/Python/import.c index 391658e46cb..71af3bd3f21 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1458,13 +1458,13 @@ PyImport_ImportFrozenModule(char *name) PyObject * PyImport_ImportModule(char *name) { - static PyObject *fromlist = NULL; - if (fromlist == NULL && strchr(name, '.') != NULL) { - fromlist = Py_BuildValue("(s)", "*"); - if (fromlist == NULL) - return NULL; - } - return PyImport_ImportModuleEx(name, NULL, NULL, fromlist); + PyObject *pname; + PyObject *result; + + pname = PyString_FromString(name); + result = PyImport_Import(pname); + Py_DECREF(pname); + return result; } /* Forward declarations for helper routines */ @@ -1906,7 +1906,8 @@ PyImport_Import(PyObject *module_name) if (standard_builtins == NULL) { standard_builtins = - PyImport_ImportModule("__builtin__"); + PyImport_ImportModuleEx("__builtin__", + NULL, NULL, NULL); if (standard_builtins == NULL) return NULL; }