summaryrefslogtreecommitdiffstats
path: root/Python/fileutils.c
diff options
context:
space:
mode:
authorneonene <53406459+neonene@users.noreply.github.com>2022-01-13 23:35:42 (GMT)
committerGitHub <noreply@github.com>2022-01-13 23:35:42 (GMT)
commitd4e64cd4b0ea431d4e371f9b0a25f6b75a069dc1 (patch)
treececdf1d08cb790283d061b8263086354976c4939 /Python/fileutils.c
parentb8ddf7e794e5316981016d6d014862e3c4ce149a (diff)
downloadcpython-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.c37
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;