| diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c |
| index b0ee5b2..fe40899 100644 |
| --- a/libusb/os/darwin_usb.c |
| +++ b/libusb/os/darwin_usb.c |
| @@ -1449,8 +1449,14 @@ static int submit_bulk_transfer(struct usbi_transfer *itransfer) { |
| |
| cInterface = &priv->interfaces[iface]; |
| |
| - (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, |
| - &transferType, &maxPacketSize, &interval); |
| + ret = (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, |
| + &transferType, &maxPacketSize, &interval); |
| + |
| + if (ret) { |
| + usbi_err (TRANSFER_CTX (transfer), "bulk transfer failed (dir = %s): %s (code = 0x%08x)", IS_XFERIN(transfer) ? "In" : "Out", |
| + darwin_error_str(ret), ret); |
| + return darwin_to_libusb (ret); |
| + } |
| |
| if (0 != (transfer->length % maxPacketSize)) { |
| /* do not need a zero packet */ |
| |