diff --git a/src/filesystem/windows/SDL_sysfilesystem.c b/src/filesystem/windows/SDL_sysfilesystem.c index 381b2d1d8..2bc799226 100644 --- a/src/filesystem/windows/SDL_sysfilesystem.c +++ b/src/filesystem/windows/SDL_sysfilesystem.c @@ -58,12 +58,14 @@ SDL_GetBasePath(void) } while (SDL_TRUE) { - path = (WCHAR *)SDL_realloc(path, buflen * sizeof (WCHAR)); - if (!path) { + WCHAR *ptr = (WCHAR *)SDL_realloc(path, buflen * sizeof (WCHAR)); + if (!ptr) { + SDL_free(path); FreeLibrary(psapi); SDL_OutOfMemory(); return NULL; } + path = ptr; len = pGetModuleFileNameExW(GetCurrentProcess(), NULL, path, buflen); if (len != buflen) { @@ -71,7 +73,6 @@ SDL_GetBasePath(void) } /* buffer too small? Try again. */ - SDL_free(path); buflen *= 2; }