]> granicus.if.org Git - python/commitdiff
Fix problem discovered by Greg McFarlane: when an imported module
authorGuido van Rossum <guido@python.org>
Thu, 10 Jul 1997 18:00:45 +0000 (18:00 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 10 Jul 1997 18:00:45 +0000 (18:00 +0000)
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

index e44dc8c264d27e0463b68b720a03fcf6d9cde223..2a4b5cc873252265bc9d331637f409211d434455 100644 (file)
@@ -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;