Windows: Fix SDL_GetBasePath() truncating paths

SDL_GetBasePath grows its path buffer for long paths, but GetModuleFileNameExW always truncates and succeeds,
so `len` was always equal to (buflen - 1) which is 127. This is easily fixed by checking for (buflen - 1) instead of buflen.
For paths longer than MAX_PATH, this problem sometimes got hidden by Windows path shortening ("C:\PROGRA~1\" etc.).

Tested on Windows 10 x64 19041 and 10586.
This commit is contained in:
Phillip Trudeau 2021-06-11 09:22:41 +00:00 committed by Ryan C. Gordon
parent db5cd8c694
commit bc7ac134db

View File

@ -68,7 +68,9 @@ SDL_GetBasePath(void)
path = (WCHAR *) ptr; path = (WCHAR *) ptr;
len = pGetModuleFileNameExW(GetCurrentProcess(), NULL, path, buflen); len = pGetModuleFileNameExW(GetCurrentProcess(), NULL, path, buflen);
if (len != buflen) { /* if it truncated, then len >= buflen - 1 */
/* if there was enough room (or failure), len < buflen - 1 */
if (len < buflen - 1) {
break; break;
} }