Skip to content

Commit 57de46a

Browse files
committed
Mark gamepads as invalid if they can't be opened
Fixes #13129 (cherry picked from commit 4b0f48c)
1 parent 59693c8 commit 57de46a

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
@@ -2754,6 +2754,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
27542754

27552755
gamepad->joystick = SDL_OpenJoystick(instance_id);
27562756
if (!gamepad->joystick) {
2757+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
27572758
SDL_free(gamepad);
27582759
SDL_UnlockJoysticks();
27592760
return NULL;
@@ -2762,6 +2763,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
27622763
if (gamepad->joystick->naxes) {
27632764
gamepad->last_match_axis = (SDL_GamepadBinding **)SDL_calloc(gamepad->joystick->naxes, sizeof(*gamepad->last_match_axis));
27642765
if (!gamepad->last_match_axis) {
2766+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
27652767
SDL_CloseJoystick(gamepad->joystick);
27662768
SDL_free(gamepad);
27672769
SDL_UnlockJoysticks();
@@ -2771,6 +2773,7 @@ SDL_Gamepad *SDL_OpenGamepad(SDL_JoystickID instance_id)
27712773
if (gamepad->joystick->nhats) {
27722774
gamepad->last_hat_mask = (Uint8 *)SDL_calloc(gamepad->joystick->nhats, sizeof(*gamepad->last_hat_mask));
27732775
if (!gamepad->last_hat_mask) {
2776+
SDL_SetObjectValid(gamepad, SDL_OBJECT_TYPE_GAMEPAD, false);
27742777
SDL_CloseJoystick(gamepad->joystick);
27752778
SDL_free(gamepad->last_match_axis);
27762779
SDL_free(gamepad);

0 commit comments

Comments
 (0)