summaryrefslogtreecommitdiff
path: root/libusb
diff options
context:
space:
mode:
Diffstat (limited to 'libusb')
-rw-r--r--libusb/os/darwin_usb.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c
index 2af7b27..292e79c 100644
--- a/libusb/os/darwin_usb.c
+++ b/libusb/os/darwin_usb.c
@@ -748,8 +748,11 @@ static int darwin_get_interface (usb_device_t **darwin_device, uint8_t ifc, io_s
if (kresult)
return kresult;
- for ( current_interface = 0 ; current_interface <= ifc ; current_interface++ )
+ for ( current_interface = 0 ; current_interface <= ifc ; current_interface++ ) {
*usbInterfacep = IOIteratorNext(interface_iterator);
+ if (current_interface != ifc)
+ (void) IOObjectRelease (*usbInterfacep);
+ }
/* done with the interface iterator */
IOObjectRelease(interface_iterator);