Skip site navigation (1)Skip section navigation (2)
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>