Commit 532164366e4596cf86aefb4fc99ffdaffa438da0

Sam Lantinga 2019-11-25T16:29:12

Use the same logic to get the config descriptor in hid_open() as in hid_enumerate()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
diff --git a/src/hidapi/libusb/hid.c b/src/hidapi/libusb/hid.c
index 180e3ae..b44e886 100644
--- a/src/hidapi/libusb/hid.c
+++ b/src/hidapi/libusb/hid.c
@@ -940,7 +940,10 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path, int bExclusive)
 		int i,j,k;
 		libusb_get_device_descriptor(usb_dev, &desc);
 
-		if (libusb_get_active_config_descriptor(usb_dev, &conf_desc) < 0)
+		res = libusb_get_active_config_descriptor(usb_dev, &conf_desc);
+		if (res < 0)
+			libusb_get_config_descriptor(usb_dev, 0, &conf_desc);
+		if (!conf_desc)
 			continue;
 		for (j = 0; j < conf_desc->bNumInterfaces; j++) {
 			const struct libusb_interface *intf = &conf_desc->interface[j];