PERFORCE change 170673 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Mon Nov 16 19:42:45 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=170673
Change 170673 by hselasky at hselasky_laptop001 on 2009/11/16 19:42:38
LibUSB:
- Fix minor memory leak:
Make sure leftover USB transfers get closed at device close.
- Reported by: Rob Jenssen
Affected files ...
.. //depot/projects/usb/src/lib/libusb/libusb20.c#10 edit
Differences ...
==== //depot/projects/usb/src/lib/libusb/libusb20.c#10 (text+ko) ====
@@ -263,6 +263,10 @@
void
libusb20_tr_stop(struct libusb20_transfer *xfer)
{
+ if (!xfer->is_opened) {
+ /* transfer is not opened */
+ return;
+ }
if (!xfer->is_pending) {
/* transfer not pending */
return;
@@ -280,6 +284,10 @@
void
libusb20_tr_drain(struct libusb20_transfer *xfer)
{
+ if (!xfer->is_opened) {
+ /* transfer is not opened */
+ return;
+ }
/* make sure that we are cancelling */
libusb20_tr_stop(xfer);
@@ -418,6 +426,10 @@
void
libusb20_tr_submit(struct libusb20_transfer *xfer)
{
+ if (!xfer->is_opened) {
+ /* transfer is not opened */
+ return;
+ }
if (xfer->is_pending) {
/* should not happen */
return;
@@ -433,6 +445,10 @@
void
libusb20_tr_start(struct libusb20_transfer *xfer)
{
+ if (!xfer->is_opened) {
+ /* transfer is not opened */
+ return;
+ }
if (xfer->is_pending) {
if (xfer->is_cancel) {
/* cancelling - restart */
@@ -461,7 +477,14 @@
for (x = 0; x != pdev->nTransfer; x++) {
xfer = pdev->pTransfer + x;
+ if (!xfer->is_opened) {
+ /* transfer is not opened */
+ continue;
+ }
+
libusb20_tr_drain(xfer);
+
+ libusb20_tr_close(xfer);
}
if (pdev->pTransfer != NULL) {
More information about the p4-projects
mailing list