diff --git a/src/joystick/SDL_gamepad.c b/src/joystick/SDL_gamepad.c index 6bb982c57e..1af2159a5d 100644 --- a/src/joystick/SDL_gamepad.c +++ b/src/joystick/SDL_gamepad.c @@ -1670,6 +1670,8 @@ int SDL_AddGamepadMappingsFromRW(SDL_RWops *src, SDL_bool freesrc) } line = buf; + SDL_LockJoysticks(); + PushMappingChangeTracking(); while (line < buf + db_size) { @@ -1702,6 +1704,8 @@ int SDL_AddGamepadMappingsFromRW(SDL_RWops *src, SDL_bool freesrc) PopMappingChangeTracking(); + SDL_UnlockJoysticks(); + SDL_free(buf); return gamepads; }