Browse Source

Fixed memory leak if joysticks were initialized but gamepads were not

If a joystick is connected, SDL_IsGamepad() will be called on it, which adds it to the cache, which then needs to be cleaned up when joysticks quit.
Sam Lantinga 8 months ago
parent
commit
91d2dbdc9d
1 changed files with 5 additions and 5 deletions
  1. 5 5
      src/joystick/SDL_gamepad.c

+ 5 - 5
src/joystick/SDL_gamepad.c

@@ -3686,11 +3686,6 @@ void SDL_QuitGamepads(void)
         SDL_CloseGamepad(SDL_gamepads);
     }
 
-    if (s_gamepadInstanceIDs) {
-        SDL_DestroyHashTable(s_gamepadInstanceIDs);
-        s_gamepadInstanceIDs = NULL;
-    }
-
     SDL_UnlockJoysticks();
 }
 
@@ -3710,6 +3705,11 @@ void SDL_QuitGamepadMappings(void)
 
     SDL_FreeVIDPIDList(&SDL_allowed_gamepads);
     SDL_FreeVIDPIDList(&SDL_ignored_gamepads);
+
+    if (s_gamepadInstanceIDs) {
+        SDL_DestroyHashTable(s_gamepadInstanceIDs);
+        s_gamepadInstanceIDs = NULL;
+    }
 }
 
 /*