From owner-p4-projects@FreeBSD.ORG Wed Nov 17 12:31:56 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B1EF11065670; Wed, 17 Nov 2010 12:31:56 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 746EB106566C for ; Wed, 17 Nov 2010 12:31:56 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 45B908FC14 for ; Wed, 17 Nov 2010 12:31:56 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id oAHCVusK042149 for ; Wed, 17 Nov 2010 12:31:56 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id oAHCVuoc042146 for perforce@freebsd.org; Wed, 17 Nov 2010 12:31:56 GMT (envelope-from hselasky@FreeBSD.org) Date: Wed, 17 Nov 2010 12:31:56 GMT Message-Id: <201011171231.oAHCVuoc042146@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 185912 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2010 12:31:56 -0000 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);