bpo-36370: Check for PyErr_Occurred() after PyImport_GetModule() (GH-12504)
This commit is contained in:
@@ -966,11 +966,10 @@ exec_code_in_module(PyObject *name, PyObject *module_dict, PyObject *code_object
|
||||
Py_DECREF(v);
|
||||
|
||||
m = PyImport_GetModule(name);
|
||||
if (m == NULL) {
|
||||
if (m == NULL && !PyErr_Occurred()) {
|
||||
PyErr_Format(PyExc_ImportError,
|
||||
"Loaded module %R not found in sys.modules",
|
||||
name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return m;
|
||||
@@ -1735,6 +1734,10 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
|
||||
}
|
||||
|
||||
mod = PyImport_GetModule(abs_name);
|
||||
if (mod == NULL && PyErr_Occurred()) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (mod != NULL && mod != Py_None) {
|
||||
_Py_IDENTIFIER(__spec__);
|
||||
_Py_IDENTIFIER(_lock_unlock_module);
|
||||
@@ -1810,9 +1813,11 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
|
||||
final_mod = PyImport_GetModule(to_return);
|
||||
Py_DECREF(to_return);
|
||||
if (final_mod == NULL) {
|
||||
PyErr_Format(PyExc_KeyError,
|
||||
"%R not in sys.modules as expected",
|
||||
to_return);
|
||||
if (!PyErr_Occurred()) {
|
||||
PyErr_Format(PyExc_KeyError,
|
||||
"%R not in sys.modules as expected",
|
||||
to_return);
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
@@ -1875,6 +1880,10 @@ PyImport_ReloadModule(PyObject *m)
|
||||
PyObject *reloaded_module = NULL;
|
||||
PyObject *imp = _PyImport_GetModuleId(&PyId_imp);
|
||||
if (imp == NULL) {
|
||||
if (PyErr_Occurred()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
imp = PyImport_ImportModule("imp");
|
||||
if (imp == NULL) {
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user