diff options
Diffstat (limited to 'Python')
-rw-r--r-- | Python/dynload_shlib.c | 11 | ||||
-rw-r--r-- | Python/importdl.c | 9 |
2 files changed, 15 insertions, 5 deletions
diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 94c6494..565faca 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -129,10 +129,19 @@ 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; const char *error = dlerror(); if (error == NULL) error = "unknown dlopen() error"; - PyErr_SetString(PyExc_ImportError, error); + error_ob = PyUnicode_FromString(error); + path = PyUnicode_FromString(pathname); + mod_name = PyUnicode_FromString(shortname); + PyErr_SetImportError(error_ob, mod_name, path); + Py_DECREF(error_ob); + Py_DECREF(path); + Py_DECREF(mod_name); return NULL; } if (fp != NULL && nhandles < 128) diff --git a/Python/importdl.c b/Python/importdl.c index 734b35f..942e4b8 100644 --- a/Python/importdl.c +++ b/Python/importdl.c @@ -74,10 +74,11 @@ _PyImport_LoadDynamicModule(PyObject *name, PyObject *path, FILE *fp) if (PyErr_Occurred()) goto error; if (p == NULL) { - PyErr_Format(PyExc_ImportError, - "dynamic module does not define init function" - " (PyInit_%s)", - shortname); + PyObject *msg = PyUnicode_FromFormat("dynamic module does not define " + "init function (PyInit_%s)", + shortname); + PyErr_SetImportError(msg, name, path); + Py_DECREF(msg); goto error; } oldcontext = _Py_PackageContext; |