mirror of https://github.com/encounter/SDL.git
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:
parent
db5cd8c694
commit
bc7ac134db
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue