diff --git a/compat/mingw.c b/compat/mingw.c index 917f9f2cb4e31c..1724518dd26168 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -921,8 +921,13 @@ struct tm *localtime_r(const time_t *timep, struct tm *result) char *mingw_getcwd(char *pointer, int len) { int i; - wchar_t wpointer[MAX_PATH]; - if (!_wgetcwd(wpointer, ARRAY_SIZE(wpointer))) + wchar_t cwd[MAX_PATH], wpointer[MAX_PATH]; + DWORD ret = GetCurrentDirectoryW(ARRAY_SIZE(cwd), cwd); + + if (ret < 0 || ret >= ARRAY_SIZE(cwd)) + return NULL; + ret = GetLongPathNameW(cwd, wpointer, ARRAY_SIZE(wpointer)); + if (!ret || ret >= ARRAY_SIZE(wpointer)) return NULL; if (xwcstoutf(pointer, wpointer, len) < 0) return NULL;