Free any temporary environment memory at SDL_Quit()

Fixes https://github.com/libsdl-org/SDL/issues/9860
This commit is contained in:
Sam Lantinga 2024-05-23 11:22:00 -07:00
parent 4022682c28
commit 156ca356b5
2 changed files with 16 additions and 0 deletions

View file

@ -58,6 +58,7 @@
extern int SDL_HelperWindowCreate(void);
extern int SDL_HelperWindowDestroy(void);
#endif
extern void SDL_FreeEnvironmentMemory(void);
#ifdef SDL_BUILD_MAJOR_VERSION
SDL_COMPILE_TIME_ASSERT(SDL_BUILD_MAJOR_VERSION,
@ -557,6 +558,8 @@ void SDL_Quit(void)
SDL_CleanupTLS();
SDL_FreeEnvironmentMemory();
SDL_bInMainQuit = SDL_FALSE;
}

View file

@ -32,6 +32,19 @@
/* Note this isn't thread-safe! */
static char *SDL_envmem = NULL; /* Ugh, memory leak */
static size_t SDL_envmemlen = 0;
void SDL_FreeEnvironmentMemory(void)
{
if (SDL_envmem) {
SDL_free(SDL_envmem);
SDL_envmem = NULL;
SDL_envmemlen = 0;
}
}
#else
void SDL_FreeEnvironmentMemory(void)
{
}
#endif
/* Put a variable into the environment */