diff options
Diffstat (limited to 'Python/dynload_shlib.c')
| -rw-r--r-- | Python/dynload_shlib.c | 22 | 
1 files changed, 11 insertions, 11 deletions
| diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 5cd1efd..7f8f134 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -51,8 +51,10 @@ static struct {  static int nhandles = 0; -dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, -                                    const char *pathname, FILE *fp) +dl_funcptr +_PyImport_FindSharedFuncptr(const char *prefix, +                            const char *shortname, +                            const char *pathname, FILE *fp)  {      dl_funcptr p;      void *handle; @@ -67,26 +69,24 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,      }      PyOS_snprintf(funcname, sizeof(funcname), -                  LEAD_UNDERSCORE "PyInit_%.200s", shortname); +                  LEAD_UNDERSCORE "%.20s_%.200s", prefix, shortname);      if (fp != NULL) {          int i; -        struct stat statb; -        if (fstat(fileno(fp), &statb) == -1) { -            PyErr_SetFromErrno(PyExc_IOError); +        struct _Py_stat_struct status; +        if (_Py_fstat(fileno(fp), &status) == -1)              return NULL; -        }          for (i = 0; i < nhandles; i++) { -            if (statb.st_dev == handles[i].dev && -                statb.st_ino == handles[i].ino) { +            if (status.st_dev == handles[i].dev && +                status.st_ino == handles[i].ino) {                  p = (dl_funcptr) dlsym(handles[i].handle,                                         funcname);                  return p;              }          }          if (nhandles < 128) { -            handles[nhandles].dev = statb.st_dev; -            handles[nhandles].ino = statb.st_ino; +            handles[nhandles].dev = status.st_dev; +            handles[nhandles].ino = status.st_ino;          }      } | 
