diff options
Diffstat (limited to 'Python/dynload_shlib.c')
| -rw-r--r-- | Python/dynload_shlib.c | 36 | 
1 files changed, 18 insertions, 18 deletions
| diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 0ca65c7..46fed6e 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -18,10 +18,6 @@  #ifdef HAVE_DLFCN_H  #include <dlfcn.h> -#else -#if defined(PYOS_OS2) && defined(PYCC_GCC) -#include "dlfcn.h" -#endif  #endif  #if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__) @@ -40,10 +36,6 @@ const char *_PyImport_DynLoadFiletab[] = {  #ifdef __CYGWIN__      ".dll",  #else  /* !__CYGWIN__ */ -#if defined(PYOS_OS2) && defined(PYCC_GCC) -    ".pyd", -    ".dll", -#else  /* !(defined(PYOS_OS2) && defined(PYCC_GCC)) */  #ifdef __VMS      ".exe",      ".EXE", @@ -52,7 +44,6 @@ const char *_PyImport_DynLoadFiletab[] = {      ".abi" PYTHON_ABI_STRING ".so",      ".so",  #endif  /* __VMS */ -#endif  /* defined(PYOS_OS2) && defined(PYCC_GCC) */  #endif  /* __CYGWIN__ */      NULL,  }; @@ -111,9 +102,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,          }      } -#if !(defined(PYOS_OS2) && defined(PYCC_GCC))      dlopenflags = PyThreadState_GET()->interp->dlopenflags; -#endif  #ifdef __VMS      /* VMS currently don't allow a pathname, use a logical name instead */ @@ -129,19 +118,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) | 
