[Python-checkins] cpython: Close #15766: Catch exceptions while raising the ImportError in
victor.stinner
python-checkins at python.org
Tue Oct 2 00:59:56 CEST 2012
http://hg.python.org/cpython/rev/f3ed5e211fcc
changeset: 79393:f3ed5e211fcc
user: Victor Stinner <victor.stinner at gmail.com>
date: Tue Oct 02 00:55:07 2012 +0200
summary:
Close #15766: Catch exceptions while raising the ImportError in imp.load_dynamic()
files:
Python/dynload_shlib.c | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -129,19 +129,30 @@
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);
+ 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);
- mod_name = PyUnicode_FromString(shortname);
+ 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)
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list