Make HIDAPI_JoystickOpen() more robust against internal logic errors Fixes https://github.com/libsdl-org/SDL/issues/6030
diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c
index 69e8488..3d596c8 100644
--- a/src/joystick/hidapi/SDL_hidapijoystick.c
+++ b/src/joystick/hidapi/SDL_hidapijoystick.c
@@ -1100,10 +1100,15 @@ HIDAPI_JoystickGetDeviceInstanceID(int device_index)
static int
HIDAPI_JoystickOpen(SDL_Joystick *joystick, int device_index)
{
- SDL_JoystickID joystickID;
+ SDL_JoystickID joystickID = -1;
SDL_HIDAPI_Device *device = HIDAPI_GetDeviceByIndex(device_index, &joystickID);
struct joystick_hwdata *hwdata;
+ if (!device || !device->driver) {
+ /* This should never happen - validated before being called */
+ return SDL_SetError("Couldn't find HIDAPI device at index %d\n", device_index);
+ }
+
hwdata = (struct joystick_hwdata *)SDL_calloc(1, sizeof(*hwdata));
if (!hwdata) {
return SDL_OutOfMemory();