Commit d7994ca2 authored by Victor Stinner's avatar Victor Stinner

get_code_from_data() uses the filesystem encoding to encode the module path,

instead of utf-8.
parent ef7e5d36
......@@ -1137,24 +1137,23 @@ get_code_from_data(ZipImporter *self, int ispackage, int isbytecode,
time_t mtime, PyObject *toc_entry)
{
PyObject *data, *code;
char *modpath;
PyObject *modpath;
data = get_data(self->archive, toc_entry);
if (data == NULL)
return NULL;
modpath = _PyUnicode_AsString(PyTuple_GetItem(toc_entry, 0));
modpath = PyUnicode_EncodeFSDefault(PyTuple_GetItem(toc_entry, 0));
if (modpath == NULL) {
Py_DECREF(data);
return NULL;
}
if (isbytecode) {
code = unmarshal_code(modpath, data, mtime);
}
else {
code = compile_source(modpath, data);
}
if (isbytecode)
code = unmarshal_code(PyBytes_AS_STRING(modpath), data, mtime);
else
code = compile_source(PyBytes_AS_STRING(modpath), data);
Py_DECREF(modpath);
Py_DECREF(data);
return code;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment