SDL: SDL_OpenHapticFromJoystick() returns a valid haptic object

From 1c0e2b7f97548eccaddbfcea4c6fb557e51f917a Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 5 Feb 2025 17:08:02 -0800
Subject: [PATCH] SDL_OpenHapticFromJoystick() returns a valid haptic object

---
 src/haptic/SDL_haptic.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c
index ca1ab381ba291..671a702736356 100644
--- a/src/haptic/SDL_haptic.c
+++ b/src/haptic/SDL_haptic.c
@@ -131,6 +131,7 @@ SDL_Haptic *SDL_OpenHaptic(SDL_HapticID instance_id)
     haptic->instance_id = instance_id;
     haptic->rumble_id = -1;
     if (!SDL_SYS_HapticOpen(haptic)) {
+        SDL_SetObjectValid(haptic, SDL_OBJECT_TYPE_HAPTIC, false);
         SDL_free(haptic);
         return NULL;
     }
@@ -268,9 +269,11 @@ SDL_Haptic *SDL_OpenHapticFromJoystick(SDL_Joystick *joystick)
         /* Initialize the haptic device
          * This function should fill in the instance ID and name.
          */
+        SDL_SetObjectValid(haptic, SDL_OBJECT_TYPE_HAPTIC, true);
         haptic->rumble_id = -1;
         if (!SDL_SYS_HapticOpenFromJoystick(haptic, joystick)) {
             SDL_SetError("Haptic: SDL_SYS_HapticOpenFromJoystick failed.");
+            SDL_SetObjectValid(haptic, SDL_OBJECT_TYPE_HAPTIC, false);
             SDL_free(haptic);
             SDL_UnlockJoysticks();
             return NULL;