From b65e85cb738e4bc555dd65111b57c56f27259677 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 10 Jul 1997 18:00:45 +0000 Subject: [PATCH] Fix problem discovered by Greg McFarlane: when an imported module replaces its own entry in sys.module, reference count errors ensue; even if there is no reference count problem, it would be preferable for the import to yield the new thing in sys.modules anyway (if only because that's what later imports will yield). This opens the road to an official hack to implement a __getattr__ like feature for modules: stick an instance in sys.modules[__name__]. --- Python/import.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Python/import.c b/Python/import.c index e44dc8c264d..2a4b5cc8732 100644 --- a/Python/import.c +++ b/Python/import.c @@ -182,6 +182,13 @@ PyImport_ExecCodeModule(name, co) if (v == NULL) return NULL; Py_DECREF(v); + + if ((m = PyDict_GetItemString(_PyImport_Modules, name)) == NULL) { + PyErr_SetString(PyExc_SystemError, + "loaded module not found in sys.modules"); + return NULL; + } + Py_INCREF(m); return m;