From cf819ca818a5b5f120e01d5ddba0825a1eff2a8c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 26 Feb 2025 08:34:14 -0800 Subject: [PATCH] Don't allow further operations on properties while we're destroying them Fixes https://github.com/libsdl-org/SDL/issues/12407 --- src/SDL_properties.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SDL_properties.c b/src/SDL_properties.c index caadaeb820..166ea0f918 100644 --- a/src/SDL_properties.c +++ b/src/SDL_properties.c @@ -126,9 +126,10 @@ void SDL_QuitProperties(void) // this can't just DestroyHashTable with SDL_FreeProperties as the destructor, because // other destructors under this might cause use to attempt a recursive lock on SDL_properties, // which isn't allowed with rwlocks. So manually iterate and free everything. - SDL_IterateHashTable(SDL_properties, FreeOneProperties, NULL); - SDL_DestroyHashTable(SDL_properties); + SDL_HashTable *properties = SDL_properties; SDL_properties = NULL; + SDL_IterateHashTable(properties, FreeOneProperties, NULL); + SDL_DestroyHashTable(properties); SDL_SetInitialized(&SDL_properties_init, false); }