Skip to content

Commit 4b0f48c

Browse files
committed
Mark gamepads as invalid if they can't be opened
Fixes #13129
1 parent a314a58 commit 4b0f48c

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/joystick/SDL_gamepad.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2878,6 +2878,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
28782878

28792879
gamepad->joystick = SDL_OpenJoystick(instance_id);
28802880
if (!gamepad->joystick) {
2881+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
28812882
SDL_free(gamepad);
28822883
SDL_UnlockJoysticks();
28832884
return NULL;
@@ -2886,6 +2887,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
28862887
if (gamepad->joystick->naxes) {
28872888
gamepad->last_match_axis = (SDL_GamepadBinding **)SDL_calloc(gamepad->joystick->naxes, sizeof(*gamepad->last_match_axis));
28882889
if (!gamepad->last_match_axis) {
2890+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
28892891
SDL_CloseJoystick(gamepad->joystick);
28902892
SDL_free(gamepad);
28912893
SDL_UnlockJoysticks();
@@ -2895,6 +2897,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
28952897
if (gamepad->joystick->nhats) {
28962898
gamepad->last_hat_mask = (Uint8 *)SDL_calloc(gamepad->joystick->nhats, sizeof(*gamepad->last_hat_mask));
28972899
if (!gamepad->last_hat_mask) {
2900+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
28982901
SDL_CloseJoystick(gamepad->joystick);
28992902
SDL_free(gamepad->last_match_axis);
29002903
SDL_free(gamepad);

0 commit comments

Comments
 (0)