diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 0578b132e6..59168a6b9d 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -467,9 +467,9 @@ static int16_t udev_analog_pressed(const struct retro_keybind *binds, unsigned i input_conv_analog_id_to_bind_id(idx, id, &id_minus, &id_plus); - if (binds[id_minus].valid && udev_input_is_pressed(binds, id_minus)) + if (binds && binds[id_minus].valid && udev_input_is_pressed(binds, id_minus)) pressed_minus = -0x7fff; - if (binds[id_plus].valid && udev_input_is_pressed(binds, id_plus)) + if (binds && binds[id_plus].valid && udev_input_is_pressed(binds, id_plus)) pressed_plus = 0x7fff; return pressed_plus + pressed_minus; @@ -519,13 +519,13 @@ static int16_t udev_input_state(void *data, const struct retro_keybind **binds, switch (device) { case RETRO_DEVICE_JOYPAD: - if (binds[port][id].valid) + if (binds[port] && binds[port][id].valid) return udev_input_is_pressed(binds[port], id) || input_joypad_pressed(udev->joypad, port, binds[port], id); break; case RETRO_DEVICE_ANALOG: ret = udev_analog_pressed(binds[port], idx, id); - if (!ret) + if (!ret && binds[port]) ret = input_joypad_analog(udev->joypad, port, idx, id, binds[port]); return ret;