diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-07 11:06:49 +0000 |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-07 11:06:49 +0000 |
commit | 2ddf7aed96507a54c529355567d663f31aeef92e (patch) | |
tree | d16b7b0c6e5bfd6643e2a5595da1a6c9b1577755 /Python/sysmodule.c | |
parent | 3d989e7be402eb7d6e8b65d3944552f76d2c1d37 (diff) | |
download | cpython-2ddf7aed96507a54c529355567d663f31aeef92e.tar.gz |
_wrealpath() and _Py_wreadlink() support surrogates (PEP 383)
Use _Py_wchar2char() to support surrogate characters in the input path.
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r-- | Python/sysmodule.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 97809d27b0..e95a91f042 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -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); |