Date: Wed, 17 Nov 2010 12:31:56 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 185912 for review Message-ID: <201011171231.oAHCVuoc042146@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@185912?ac=10 Change 185912 by hselasky@hselasky_laptop001 on 2010/11/17 12:31:00 IFC Affected files ... .. //depot/projects/usb/src/lib/libusb/libusb10.c#29 integrate .. //depot/projects/usb/src/lib/libusb/libusb10_io.c#17 integrate Differences ... ==== //depot/projects/usb/src/lib/libusb/libusb10.c#29 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.11 2010/10/14 20:50:33 hselasky Exp $ */ +/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.12 2010/11/13 19:25:11 hselasky Exp $ */ /*- * Copyright (c) 2009 Sylvestre Gallon. All rights reserved. * Copyright (c) 2009 Hans Petter Selasky. All rights reserved. @@ -800,6 +800,10 @@ if (uxfer == NULL) return; /* be NULL safe */ + /* check if we should free the transfer buffer */ + if (uxfer->flags & LIBUSB_TRANSFER_FREE_BUFFER) + free(uxfer->buffer); + sxfer = (struct libusb_super_transfer *)( (uint8_t *)uxfer - sizeof(*sxfer)); ==== //depot/projects/usb/src/lib/libusb/libusb10_io.c#17 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/lib/libusb/libusb10_io.c,v 1.8 2010/10/14 20:18:39 hselasky Exp $ */ +/* $FreeBSD: src/lib/libusb/libusb10_io.c,v 1.9 2010/11/13 19:25:11 hselasky Exp $ */ /*- * Copyright (c) 2009 Sylvestre Gallon. All rights reserved. * @@ -187,6 +187,8 @@ /* Do all done callbacks */ while ((sxfer = TAILQ_FIRST(&ctx->tr_done))) { + uint8_t flags; + TAILQ_REMOVE(&ctx->tr_done, sxfer, entry); sxfer->entry.tqe_prev = NULL; @@ -197,13 +199,14 @@ uxfer = (struct libusb_transfer *)( ((uint8_t *)sxfer) + sizeof(*sxfer)); + /* Allow the callback to free the transfer itself. */ + flags = uxfer->flags; + if (uxfer->callback != NULL) (uxfer->callback) (uxfer); - if (uxfer->flags & LIBUSB_TRANSFER_FREE_BUFFER) - free(uxfer->buffer); - - if (uxfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) + /* Check if the USB transfer should be automatically freed. */ + if (flags & LIBUSB_TRANSFER_FREE_TRANSFER) libusb_free_transfer(uxfer); CTX_LOCK(ctx);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011171231.oAHCVuoc042146>