mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
#3705: Command-line arguments were not correctly decoded when the
terminal does not use UTF8. Now the code propagates the unicode string as far as possible, and avoids the conversion to char* which implicitely uses utf-8. Reviewed by Benjamin.
This commit is contained in:
parent
d3013ffa49
commit
9a5499b4e5
4 changed files with 35 additions and 25 deletions
|
@ -2793,6 +2793,7 @@ call_find_module(char *name, PyObject *path)
|
|||
{
|
||||
extern int fclose(FILE *);
|
||||
PyObject *fob, *ret;
|
||||
PyObject *pathobj;
|
||||
struct filedescr *fdp;
|
||||
char pathname[MAXPATHLEN+1];
|
||||
FILE *fp = NULL;
|
||||
|
@ -2836,9 +2837,9 @@ call_find_module(char *name, PyObject *path)
|
|||
fob = Py_None;
|
||||
Py_INCREF(fob);
|
||||
}
|
||||
ret = Py_BuildValue("Os(ssi)",
|
||||
fob, pathname, fdp->suffix, fdp->mode, fdp->type);
|
||||
Py_DECREF(fob);
|
||||
pathobj = PyUnicode_DecodeFSDefault(pathname);
|
||||
ret = Py_BuildValue("NN(ssi)",
|
||||
fob, pathobj, fdp->suffix, fdp->mode, fdp->type);
|
||||
PyMem_FREE(found_encoding);
|
||||
|
||||
return ret;
|
||||
|
@ -2849,7 +2850,9 @@ imp_find_module(PyObject *self, PyObject *args)
|
|||
{
|
||||
char *name;
|
||||
PyObject *path = NULL;
|
||||
if (!PyArg_ParseTuple(args, "s|O:find_module", &name, &path))
|
||||
if (!PyArg_ParseTuple(args, "es|O:find_module",
|
||||
Py_FileSystemDefaultEncoding, &name,
|
||||
&path))
|
||||
return NULL;
|
||||
return call_find_module(name, path);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue