zipimport: fix "can't find module ..." error message
I cannot use %U: fullname is a bytes object, not an unicode object. %A format cannot be used, it adds 'b' (bytes) prefix. So create cant_find_module() function to decode the filename and raise the error message.
This commit is contained in:
parent
9a90900da5
commit
8c8ed0a799
|
@ -399,6 +399,20 @@ zipimporter_get_filename(PyObject *obj, PyObject *args)
|
||||||
return modpath;
|
return modpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cant_find_module(PyObject *bytes)
|
||||||
|
{
|
||||||
|
PyObject *unicode = PyUnicode_DecodeFSDefaultAndSize(
|
||||||
|
PyBytes_AS_STRING(bytes), PyBytes_GET_SIZE(bytes));
|
||||||
|
if (unicode != NULL) {
|
||||||
|
PyErr_Format(ZipImportError, "can't find module %U",
|
||||||
|
unicode);
|
||||||
|
Py_DECREF(unicode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PyErr_Format(ZipImportError, "can't find module");
|
||||||
|
}
|
||||||
|
|
||||||
/* Return a bool signifying whether the module is a package or not. */
|
/* Return a bool signifying whether the module is a package or not. */
|
||||||
static PyObject *
|
static PyObject *
|
||||||
zipimporter_is_package(PyObject *obj, PyObject *args)
|
zipimporter_is_package(PyObject *obj, PyObject *args)
|
||||||
|
@ -415,8 +429,7 @@ zipimporter_is_package(PyObject *obj, PyObject *args)
|
||||||
if (mi == MI_ERROR)
|
if (mi == MI_ERROR)
|
||||||
goto error;
|
goto error;
|
||||||
if (mi == MI_NOT_FOUND) {
|
if (mi == MI_NOT_FOUND) {
|
||||||
PyErr_Format(ZipImportError, "can't find module '%.200U'",
|
cant_find_module(fullname);
|
||||||
fullname);
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
Py_DECREF(fullname);
|
Py_DECREF(fullname);
|
||||||
|
@ -511,8 +524,7 @@ zipimporter_get_source(PyObject *obj, PyObject *args)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (mi == MI_NOT_FOUND) {
|
if (mi == MI_NOT_FOUND) {
|
||||||
PyErr_Format(ZipImportError, "can't find module '%.200U'",
|
cant_find_module(fullname);
|
||||||
fullname);
|
|
||||||
Py_DECREF(fullname);
|
Py_DECREF(fullname);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue