@@ -629,7 +629,7 @@ static void invasive_fill_device_info_usage(struct hid_device_info *cur_dev, lib
629
629
* Create and fill up most of hid_device_info fields.
630
630
* usage_page/usage is not filled up.
631
631
*/
632
- static struct hid_device_info * create_device_info_for_device (libusb_device_handle * handle , struct libusb_device_descriptor * desc , int config_number , int interface_num )
632
+ static struct hid_device_info * create_device_info_for_device (libusb_device * device , libusb_device_handle * handle , struct libusb_device_descriptor * desc , int config_number , int interface_num )
633
633
{
634
634
struct hid_device_info * cur_dev = calloc (1 , sizeof (struct hid_device_info ));
635
635
if (cur_dev == NULL ) {
@@ -644,12 +644,12 @@ static struct hid_device_info * create_device_info_for_device(libusb_device_hand
644
644
645
645
cur_dev -> interface_number = interface_num ;
646
646
647
+ cur_dev -> path = make_path (device , config_number , interface_num );
648
+
647
649
if (!handle ) {
648
650
return cur_dev ;
649
651
}
650
652
651
- cur_dev -> path = make_path (libusb_get_device (handle ), config_number , interface_num );
652
-
653
653
if (desc -> iSerialNumber > 0 )
654
654
cur_dev -> serial_number = get_usb_string (handle , desc -> iSerialNumber );
655
655
@@ -720,7 +720,7 @@ struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
720
720
}
721
721
#endif
722
722
723
- tmp = create_device_info_for_device (handle , & desc , conf_desc -> bConfigurationValue , intf_desc -> bInterfaceNumber );
723
+ tmp = create_device_info_for_device (dev , handle , & desc , conf_desc -> bConfigurationValue , intf_desc -> bInterfaceNumber );
724
724
if (tmp ) {
725
725
#ifdef INVASIVE_GET_USAGE
726
726
/* TODO: have a runtime check for this section. */
@@ -1515,9 +1515,10 @@ int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *s
1515
1515
HID_API_EXPORT struct hid_device_info * HID_API_CALL hid_get_device_info (hid_device * dev ) {
1516
1516
if (!dev -> device_info ) {
1517
1517
struct libusb_device_descriptor desc ;
1518
- libusb_get_device_descriptor (libusb_get_device (dev -> device_handle ), & desc );
1518
+ libusb_device * usb_device = libusb_get_device (dev -> device_handle );
1519
+ libusb_get_device_descriptor (usb_device , & desc );
1519
1520
1520
- dev -> device_info = create_device_info_for_device (dev -> device_handle , & desc , dev -> config_number , dev -> interface );
1521
+ dev -> device_info = create_device_info_for_device (usb_device , dev -> device_handle , & desc , dev -> config_number , dev -> interface );
1521
1522
// device error already set by create_device_info_for_device, if any
1522
1523
1523
1524
if (dev -> device_info ) {
0 commit comments