From: Hirokazu Yamamoto Date: Thu, 9 Oct 2008 10:00:30 +0000 (+0000) Subject: On windows, os.chdir given unicode was not working if GetCurrentDirectoryW X-Git-Tag: v2.7a1~2752 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=10a018c285219b42d8a1cc972acf9e440a979106;p=thirdparty%2FPython%2Fcpython.git On windows, os.chdir given unicode was not working if GetCurrentDirectoryW returned a path longer than MAX_PATH. (But It's doubtful this code path is really executed because I cannot move to such directory on win2k) --- diff --git a/Misc/NEWS b/Misc/NEWS index dc435542d42a..dc191d64fec0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,10 @@ What's New in Python 2.7 alpha 1 Core and Builtins ----------------- +- On windows, os.chdir given unicode was not working if GetCurrentDirectoryW + returned a path longer than MAX_PATH. (But It's doubtful this code path is + really executed because I cannot move to such directory on win2k) + - Issue #4069: When set.remove(element) is used with a set element, the element is temporarily replaced with an equivalent frozenset. But the eventual KeyError would always report the empty frozenset([]) as the missing key. Now diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 79c3a4437d1e..6e4925b5f572 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -726,11 +726,14 @@ win32_wchdir(LPCWSTR path) if (!result) return FALSE; if (result > MAX_PATH+1) { - new_path = malloc(result); + new_path = malloc(result * sizeof(wchar_t)); if (!new_path) { SetLastError(ERROR_OUTOFMEMORY); return FALSE; } + result = GetCurrentDirectoryW(result, new_path); + if (!result) + return FALSE; } if (wcsncmp(new_path, L"\\\\", 2) == 0 || wcsncmp(new_path, L"//", 2) == 0)