From 0ee992db263c5f0c5ebdbf714a276074cb87d9cd Mon Sep 17 00:00:00 2001 From: Connor Harrison Date: Sat, 19 Jul 2025 21:47:31 +0100 Subject: [PATCH] Enforce correct ABI in callback --- libusb/io.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libusb/io.c b/libusb/io.c index fa26ffa..bc108ef 100644 --- a/libusb/io.c +++ b/libusb/io.c @@ -1719,7 +1719,10 @@ int usbi_handle_transfer_completion(struct usbi_transfer *itransfer, (void *) transfer, transfer->callback); if (transfer->callback) { libusb_lock_event_waiters (ctx); - transfer->callback(transfer); + + typedef void sysv_callback_t(struct libusb_transfer*) __attribute__((sysv_abi)); + ((sysv_callback_t*)transfer->callback)(transfer); + libusb_unlock_event_waiters(ctx); } /* transfer might have been freed by the above call, do not use from