diff options
author | neonene <53406459+neonene@users.noreply.github.com> | 2022-01-13 23:35:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-13 23:35:42 (GMT) |
commit | d4e64cd4b0ea431d4e371f9b0a25f6b75a069dc1 (patch) | |
tree | cecdf1d08cb790283d061b8263086354976c4939 /Python/fileutils.c | |
parent | b8ddf7e794e5316981016d6d014862e3c4ce149a (diff) | |
download | cpython-d4e64cd4b0ea431d4e371f9b0a25f6b75a069dc1.zip cpython-d4e64cd4b0ea431d4e371f9b0a25f6b75a069dc1.tar.gz cpython-d4e64cd4b0ea431d4e371f9b0a25f6b75a069dc1.tar.bz2 |
bpo-46362: Ensure ntpath.abspath() uses the Windows API correctly (GH-30571)
This makes ntpath.abspath()/getpath_abspath() follow normpath(), since some WinAPIs such as PathCchSkipRoot() require backslashed paths.
Diffstat (limited to 'Python/fileutils.c')
-rw-r--r-- | Python/fileutils.c | 37 |
1 files changed, 1 insertions, 36 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c index 151c6fe..9a71b83 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -2049,42 +2049,7 @@ _Py_abspath(const wchar_t *path, wchar_t **abspath_p) } #ifdef MS_WINDOWS - wchar_t woutbuf[MAX_PATH], *woutbufp = woutbuf; - DWORD result; - - result = GetFullPathNameW(path, - Py_ARRAY_LENGTH(woutbuf), woutbuf, - NULL); - if (!result) { - return -1; - } - - if (result >= Py_ARRAY_LENGTH(woutbuf)) { - if ((size_t)result <= (size_t)PY_SSIZE_T_MAX / sizeof(wchar_t)) { - woutbufp = PyMem_RawMalloc((size_t)result * sizeof(wchar_t)); - } - else { - woutbufp = NULL; - } - if (!woutbufp) { - *abspath_p = NULL; - return 0; - } - - result = GetFullPathNameW(path, result, woutbufp, NULL); - if (!result) { - PyMem_RawFree(woutbufp); - return -1; - } - } - - if (woutbufp != woutbuf) { - *abspath_p = woutbufp; - return 0; - } - - *abspath_p = _PyMem_RawWcsdup(woutbufp); - return 0; + return _PyOS_getfullpathname(path, abspath_p); #else wchar_t cwd[MAXPATHLEN + 1]; cwd[Py_ARRAY_LENGTH(cwd) - 1] = 0; |