cpython: ef2b6305d395 (original) (raw)

Mercurial > cpython

changeset 68716:ef2b6305d395

Issue #3080: _PyImport_LoadDynamicModule() uses Unicode for name and path Document also that dynamic module names are ASCII only [#3080]

Victor Stinner victor.stinner@haypocalc.com
date Mon, 14 Mar 2011 15:54:07 -0400
parents bab42673674a
children d52f471fbbeb
files Python/import.c Python/importdl.c Python/importdl.h
diffstat 3 files changed, 60 insertions(+), 66 deletions(-)[+] [-] Python/import.c 54 Python/importdl.c 70 Python/importdl.h 2

line wrap: on

line diff

--- a/Python/import.c +++ b/Python/import.c @@ -2173,9 +2173,21 @@ load_module(char *name, FILE *fp, char * break; #ifdef HAVE_DYNAMIC_LOADING

#endif case PKG_DIRECTORY: @@ -2185,11 +2197,10 @@ load_module(char *name, FILE *fp, char * case C_BUILTIN: case PY_FROZEN: { PyObject *nameobj = PyUnicode_FromString(name);

+

} #endif /* HAVE_DYNAMIC_LOADING */

--- a/Python/importdl.c +++ b/Python/importdl.c @@ -15,67 +15,68 @@ extern dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, const char *pathname, FILE fp); - +/ name should be ASCII only because the C language doesn't accept non-ASCII

PyObject * -_PyImport_LoadDynamicModule(char *name, char *pathname, FILE *fp) +_PyImport_LoadDynamicModule(PyObject *name, PyObject *path, FILE *fp) { PyObject *m;

+

if (PyErr_Occurred()) { Py_DECREF(m); PyErr_Format(PyExc_SystemError, "initialization of %s raised unreported exception", shortname);

- -error:

-finally:

} #endif /* HAVE_DYNAMIC_LOADING */

--- a/Python/importdl.h +++ b/Python/importdl.h @@ -28,7 +28,7 @@ struct filedescr { extern struct filedescr * _PyImport_Filetab; extern const struct filedescr _PyImport_DynLoadFiletab[]; -extern PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname, +extern PyObject *_PyImport_LoadDynamicModule(PyObject *name, PyObject *pathname, FILE ); / Max length of module suffix searched for -- accommodates "module.slb" */