Skip to content

Commit 4290345

Browse files
committed
Add a runtime check for SDL_JoystickRumble to prevent crashing on dynamic libSDL2
1 parent e92be2a commit 4290345

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

input/drivers_joypad/sdl_joypad.c

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -504,15 +504,19 @@ static bool sdl_joypad_set_rumble(unsigned pad, enum retro_rumble_effect effect,
504504
}
505505

506506
#if SDL_VERSION_ATLEAST(2, 0, 9)
507-
if (joypad->rumble_effect == -3)
507+
typedef int (*SDL_JoystickRumble_func)(SDL_Joystick *, Uint16, Uint16, Uint32);
508+
SDL_JoystickRumble_func pSDL_JoystickRumble =
509+
(SDL_JoystickRumble_func)SDL_LoadFunction(SDL_GetBasePath(), "SDL_JoystickRumble");
510+
511+
if (!pSDL_JoystickRumble ||
512+
pSDL_JoystickRumble(joypad->joypad,
513+
efx.leftright.large_magnitude,
514+
efx.leftright.small_magnitude,
515+
efx.leftright.length) == -1)
508516
{
509-
if (SDL_JoystickRumble(joypad->joypad, efx.leftright.large_magnitude, efx.leftright.small_magnitude, efx.leftright.length) == -1)
510-
{
511-
RARCH_WARN("[SDL]: Failed to rumble joypad %u: %s\n",
512-
pad, SDL_GetError());
513-
joypad->rumble_effect = -2;
514-
return false;
515-
}
517+
RARCH_WARN("[SDL]: Failed to rumble joypad %u: %s\n", pad, SDL_GetError());
518+
joypad->rumble_effect = -2;
519+
return false;
516520
}
517521
#endif
518522

0 commit comments

Comments
 (0)