]> granicus.if.org Git - python/commitdiff
[3.5] bpo-30626: Fix error handling in PyImport_Import(). (GH-2103) (#2222)
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 15 Jun 2017 18:15:26 +0000 (21:15 +0300)
committerGitHub <noreply@github.com>
Thu, 15 Jun 2017 18:15:26 +0000 (21:15 +0300)
In rare circumstances PyImport_Import() could return NULL without raising
an error.
(cherry picked from commit 145541c)

Python/import.c

index ea8bc00a73a7826ff3608a02e567863c6ef7be6c..4f08d5ebb7785f3babccc3fd8f369c45e58e0879 100644 (file)
@@ -1806,9 +1806,13 @@ PyImport_Import(PyObject *module_name)
     Py_DECREF(r);
 
     modules = PyImport_GetModuleDict();
-    r = PyDict_GetItem(modules, module_name);
-    if (r != NULL)
+    r = PyDict_GetItemWithError(modules, module_name);
+    if (r != NULL) {
         Py_INCREF(r);
+    }
+    else if (!PyErr_Occurred()) {
+        PyErr_SetObject(PyExc_KeyError, module_name);
+    }
 
   err:
     Py_XDECREF(globals);