diff --git a/input/connect/joypad_connection.c b/input/connect/joypad_connection.c index 318c2e0501..51d15530a5 100644 --- a/input/connect/joypad_connection.c +++ b/input/connect/joypad_connection.c @@ -35,7 +35,7 @@ int pad_connection_find_vacant_pad(joypad_connection_t *joyconn) return -1; } -void *pad_connection_init(unsigned pads) +joypad_connection_t *pad_connection_init(unsigned pads) { int i; joypad_connection_t *joyconn = (joypad_connection_t*) diff --git a/input/connect/joypad_connection.h b/input/connect/joypad_connection.h index b5b20a79f7..c9f1842b0e 100644 --- a/input/connect/joypad_connection.h +++ b/input/connect/joypad_connection.h @@ -49,7 +49,7 @@ int32_t pad_connection_pad_init(joypad_connection_t *joyconn, const char* name, uint16_t vid, uint16_t pid, void *data, send_control_t ptr); -void *pad_connection_init(unsigned pads); +joypad_connection_t *pad_connection_init(unsigned pads); void pad_connection_destroy(joypad_connection_t *joyconn); diff --git a/input/drivers_hid/btstack_hid.c b/input/drivers_hid/btstack_hid.c index b6a25c1da6..d5932324e1 100644 --- a/input/drivers_hid/btstack_hid.c +++ b/input/drivers_hid/btstack_hid.c @@ -833,7 +833,10 @@ static void *btstack_hid_init(void) if (!hid) goto error; - hid->slots = (joypad_connection_t*)pad_connection_init(MAX_USERS); + hid->slots = pad_connection_init(MAX_USERS); + + if (!hid->slots) + goto error; return hid; diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 6309ada8b1..50fb2db07e 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -425,8 +425,10 @@ static void *iohidmanager_hid_init(void) if (iohidmanager_hid_manager_set_device_matching(hid_apple) == -1) goto error; - hid_apple->slots = (joypad_connection_t*)pad_connection_init(MAX_USERS); + hid_apple->slots = pad_connection_init(MAX_USERS); + if (!hid_apple->slots) + goto error; return hid_apple; diff --git a/input/drivers_hid/libusb_hid.c b/input/drivers_hid/libusb_hid.c index 4387df2bed..34daafdb77 100644 --- a/input/drivers_hid/libusb_hid.c +++ b/input/drivers_hid/libusb_hid.c @@ -498,7 +498,10 @@ static void *libusb_hid_init(void) if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) goto error; - hid->slots = (joypad_connection_t*)pad_connection_init(MAX_USERS); + hid->slots = pad_connection_init(MAX_USERS); + + if (!hid->slots) + goto error; count = libusb_get_device_list(NULL, &devices);