get_code_from_data() uses the filesystem encoding to encode the module path,
instead of utf-8.
This commit is contained in:
parent
d36c8217e1
commit
2a94f4c0ef
|
@ -1137,24 +1137,23 @@ get_code_from_data(ZipImporter *self, int ispackage, int isbytecode,
|
||||||
time_t mtime, PyObject *toc_entry)
|
time_t mtime, PyObject *toc_entry)
|
||||||
{
|
{
|
||||||
PyObject *data, *code;
|
PyObject *data, *code;
|
||||||
char *modpath;
|
PyObject *modpath;
|
||||||
|
|
||||||
data = get_data(self->archive, toc_entry);
|
data = get_data(self->archive, toc_entry);
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
modpath = _PyUnicode_AsString(PyTuple_GetItem(toc_entry, 0));
|
modpath = PyUnicode_EncodeFSDefault(PyTuple_GetItem(toc_entry, 0));
|
||||||
if (modpath == NULL) {
|
if (modpath == NULL) {
|
||||||
Py_DECREF(data);
|
Py_DECREF(data);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isbytecode) {
|
if (isbytecode)
|
||||||
code = unmarshal_code(modpath, data, mtime);
|
code = unmarshal_code(PyBytes_AS_STRING(modpath), data, mtime);
|
||||||
}
|
else
|
||||||
else {
|
code = compile_source(PyBytes_AS_STRING(modpath), data);
|
||||||
code = compile_source(modpath, data);
|
Py_DECREF(modpath);
|
||||||
}
|
|
||||||
Py_DECREF(data);
|
Py_DECREF(data);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue