From ebcabc1aded5043e0f5abf08e97ae14cc9ff0a60 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Sat, 12 Apr 2008 16:58:49 +0100 Subject: [PATCH] uru4000: avoid cancelling a completed transfer --- libfprint/drivers/uru4000.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index f2a0fdf3..77491f48 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -467,9 +467,13 @@ static void image_cb(struct libusb_transfer *transfer) struct fp_img *img; int r = 0; + /* remove the global reference early: otherwise we may report results, + * leading to immediate deactivation of driver, which will potentially + * try to cancel an already-completed transfer */ + urudev->img_transfer = NULL; + if (transfer->status == LIBUSB_TRANSFER_CANCELLED) { fp_dbg("cancelled"); - urudev->img_transfer = NULL; g_free(transfer->buffer); libusb_free_transfer(transfer); return;