Commit 4e7ceabd authored by Victor Stinner's avatar Victor Stinner

_Py_wrealpath() uses _Py_char2wchar() to decode the result, to support

surrogate characters.
parent 560612a9
......@@ -353,6 +353,7 @@ _Py_wrealpath(const wchar_t *path,
{
char *cpath;
char cresolved_path[PATH_MAX];
wchar_t *wresolved_path;
char *res;
size_t r;
cpath = _Py_wchar2char(path);
......@@ -364,11 +365,20 @@ _Py_wrealpath(const wchar_t *path,
PyMem_Free(cpath);
if (res == NULL)
return NULL;
r = mbstowcs(resolved_path, cresolved_path, resolved_path_size);
if (r == (size_t)-1 || r >= PATH_MAX) {
wresolved_path = _Py_char2wchar(cresolved_path);
if (wresolved_path == NULL) {
errno = EINVAL;
return NULL;
}
r = wcslen(wresolved_path);
if (resolved_path_size <= r) {
PyMem_Free(wresolved_path);
errno = EINVAL;
return NULL;
}
wcsncpy(resolved_path, wresolved_path, resolved_path_size);
PyMem_Free(wresolved_path);
return resolved_path;
}
#endif
......
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