Kaydet (Commit) 3b635cd4 authored tarafından Victor Stinner's avatar Victor Stinner

Close #15766: Catch exceptions while raising the ImportError in imp.load_dynamic()

üst f25dabe1
......@@ -129,19 +129,30 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
handle = dlopen(pathname, dlopenflags);
if (handle == NULL) {
PyObject *mod_name = NULL;
PyObject *path = NULL;
PyObject *error_ob = NULL;
PyObject *mod_name;
PyObject *path;
PyObject *error_ob;
const char *error = dlerror();
if (error == NULL)
error = "unknown dlopen() error";
error_ob = PyUnicode_FromString(error);
path = PyUnicode_FromString(pathname);
if (error_ob == NULL)
return NULL;
mod_name = PyUnicode_FromString(shortname);
if (mod_name == NULL) {
Py_DECREF(error_ob);
return NULL;
}
path = PyUnicode_FromString(pathname);
if (path == NULL) {
Py_DECREF(error_ob);
Py_DECREF(mod_name);
return NULL;
}
PyErr_SetImportError(error_ob, mod_name, path);
Py_XDECREF(error_ob);
Py_XDECREF(path);
Py_XDECREF(mod_name);
Py_DECREF(error_ob);
Py_DECREF(mod_name);
Py_DECREF(path);
return NULL;
}
if (fp != NULL && nhandles < 128)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment