Clean up thread local storage when quitting SDL SDL_Quit() should be the last SDL API that you call before exiting your application, and is intended to clean up all internal state. If real-life applications are relying on thread-local storage after SDL_Quit() we could potentially add a hint to control this behavior. Fixes https://github.com/libsdl-org/SDL/issues/6200
diff --git a/src/SDL.c b/src/SDL.c
index 59602d6..643b5ca 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -505,6 +505,8 @@ SDL_Quit(void)
*/
SDL_memset( SDL_SubsystemRefCount, 0x0, sizeof(SDL_SubsystemRefCount) );
+ SDL_TLSCleanup();
+
SDL_bInMainQuit = SDL_FALSE;
}