mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
imp_load_module() uses PyUnicode_FSConverter() to support surrogates in module
path
This commit is contained in:
parent
42311734ab
commit
1a5630326f
1 changed files with 7 additions and 7 deletions
|
@ -3380,16 +3380,16 @@ imp_load_module(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
PyObject *fob;
|
PyObject *fob;
|
||||||
char *pathname;
|
PyObject *pathname;
|
||||||
PyObject * ret;
|
PyObject * ret;
|
||||||
char *suffix; /* Unused */
|
char *suffix; /* Unused */
|
||||||
char *mode;
|
char *mode;
|
||||||
int type;
|
int type;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "sOes(ssi):load_module",
|
if (!PyArg_ParseTuple(args, "sOO&(ssi):load_module",
|
||||||
&name, &fob,
|
&name, &fob,
|
||||||
Py_FileSystemDefaultEncoding, &pathname,
|
PyUnicode_FSConverter, &pathname,
|
||||||
&suffix, &mode, &type))
|
&suffix, &mode, &type))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (*mode) {
|
if (*mode) {
|
||||||
|
@ -3400,7 +3400,7 @@ imp_load_module(PyObject *self, PyObject *args)
|
||||||
if (!(*mode == 'r' || *mode == 'U') || strchr(mode, '+')) {
|
if (!(*mode == 'r' || *mode == 'U') || strchr(mode, '+')) {
|
||||||
PyErr_Format(PyExc_ValueError,
|
PyErr_Format(PyExc_ValueError,
|
||||||
"invalid file open mode %.200s", mode);
|
"invalid file open mode %.200s", mode);
|
||||||
PyMem_Free(pathname);
|
Py_DECREF(pathname);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3409,12 +3409,12 @@ imp_load_module(PyObject *self, PyObject *args)
|
||||||
else {
|
else {
|
||||||
fp = get_file(NULL, fob, mode);
|
fp = get_file(NULL, fob, mode);
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
PyMem_Free(pathname);
|
Py_DECREF(pathname);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = load_module(name, fp, pathname, type, NULL);
|
ret = load_module(name, fp, PyBytes_AS_STRING(pathname), type, NULL);
|
||||||
PyMem_Free(pathname);
|
Py_DECREF(pathname);
|
||||||
if (fp)
|
if (fp)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue