_wrealpath() and _Py_wreadlink() support surrogates (PEP 383)

Use _Py_wchar2char() to support surrogate characters in the input path.
This commit is contained in:
Victor Stinner 2010-10-07 11:06:49 +00:00
parent afa88b5dac
commit 7ae7c87b05
2 changed files with 10 additions and 6 deletions

View file

@ -1661,16 +1661,17 @@ makeargvobject(int argc, wchar_t **argv)
static wchar_t*
_wrealpath(const wchar_t *path, wchar_t *resolved_path)
{
char cpath[PATH_MAX];
char *cpath;
char cresolved_path[PATH_MAX];
char *res;
size_t r;
r = wcstombs(cpath, path, PATH_MAX);
if (r == (size_t)-1 || r >= PATH_MAX) {
cpath = _Py_wchar2char(path);
if (cpath == NULL) {
errno = EINVAL;
return NULL;
}
res = realpath(cpath, cresolved_path);
PyMem_Free(cpath);
if (res == NULL)
return NULL;
r = mbstowcs(resolved_path, cresolved_path, PATH_MAX);