summaryrefslogtreecommitdiff
path: root/libusb/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'libusb/io.c')
-rw-r--r--libusb/io.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libusb/io.c b/libusb/io.c
index 7c20a7e..36e0b81 100644
--- a/libusb/io.c
+++ b/libusb/io.c
@@ -1719,8 +1719,11 @@ int usbi_handle_transfer_completion(struct usbi_transfer *itransfer,
transfer->actual_length = itransfer->transferred;
usbi_dbg(ctx, "transfer %p has callback %p",
(void *) transfer, transfer->callback);
- if (transfer->callback)
+ if (transfer->callback) {
+ libusb_lock_event_waiters (ctx);
transfer->callback(transfer);
+ libusb_unlock_event_waiters(ctx);
+ }
/* transfer might have been freed by the above call, do not use from
* this point. */
if (flags & LIBUSB_TRANSFER_FREE_TRANSFER)