Index: third_party/libusb/darwin-sigfpe.patch |
diff --git a/third_party/libusb/darwin-sigfpe.patch b/third_party/libusb/darwin-sigfpe.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3c74db1857015c18dd7854871b41f2d5dd728a2c |
--- /dev/null |
+++ b/third_party/libusb/darwin-sigfpe.patch |
@@ -0,0 +1,22 @@ |
+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 */ |
+ |