Make HIDAPI_JoystickOpen() more robust against internal logic errors

Fixes https://github.com/libsdl-org/SDL/issues/6030
main
Sam Lantinga 2022-08-10 06:00:30 -07:00
parent bdc7f958fd
commit 9ff498e78e
1 changed files with 6 additions and 1 deletions

View File

@ -1100,10 +1100,15 @@ HIDAPI_JoystickGetDeviceInstanceID(int device_index)
static int static int
HIDAPI_JoystickOpen(SDL_Joystick *joystick, int device_index) HIDAPI_JoystickOpen(SDL_Joystick *joystick, int device_index)
{ {
SDL_JoystickID joystickID; SDL_JoystickID joystickID = -1;
SDL_HIDAPI_Device *device = HIDAPI_GetDeviceByIndex(device_index, &joystickID); SDL_HIDAPI_Device *device = HIDAPI_GetDeviceByIndex(device_index, &joystickID);
struct joystick_hwdata *hwdata; 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)); hwdata = (struct joystick_hwdata *)SDL_calloc(1, sizeof(*hwdata));
if (!hwdata) { if (!hwdata) {
return SDL_OutOfMemory(); return SDL_OutOfMemory();