diff options
author | Brett Cannon <brett@python.org> | 2012-04-20 19:22:50 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-20 19:22:50 (GMT) |
commit | f0434e647aa3e7b82a740be4a820aec951a885ac (patch) | |
tree | ea6c3e0d3b874549cc081a54e0e0c63ac132da38 /Python/dynload_shlib.c | |
parent | 3c23a87e58ba5ba3161eaacae98a49a79e1f2786 (diff) | |
download | cpython-f0434e647aa3e7b82a740be4a820aec951a885ac.zip cpython-f0434e647aa3e7b82a740be4a820aec951a885ac.tar.gz cpython-f0434e647aa3e7b82a740be4a820aec951a885ac.tar.bz2 |
Issue #14599: Generalize a test for ImportError.path and add support
in Python/dynload_shlibs.c.
This should fix the remaining importlib test failure on Windows.
Support in AIX and HP-UX will be in a separate checkin.
Diffstat (limited to 'Python/dynload_shlib.c')
-rw-r--r-- | Python/dynload_shlib.c | 11 |
1 files changed, 10 insertions, 1 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) |