PERFORCE change 133340 for review

Hans Petter Selasky hselasky at FreeBSD.org
Tue Jan 15 11:44:21 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=133340

Change 133340 by hselasky at hselasky_laptop001 on 2008/01/15 19:43:41

	
	Try to work around some compiler warnings "xfer[2] and xfer[3] might 
	be used uninitialized" which is not the case on FreeBSD 7.0-RC1.
	Reported by "Stefan Lambrev".

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#104 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#104 (text+ko) ====

@@ -2110,31 +2110,33 @@
 repeat:
 	xfer[0] = LIST_FIRST(&(info->done_head));
 	if (xfer[0]) {
+	  do {
 		LIST_REMOVE(xfer[0], done_list);
 		xfer[0]->done_list.le_prev = NULL;
 		xfer[1] = LIST_FIRST(&(info->done_head));
 		if (xfer[1] == NULL) {
 			dropcount = 1;
-			goto lockchange_0;
+			break;
 		}
 		LIST_REMOVE(xfer[1], done_list);
 		xfer[1]->done_list.le_prev = NULL;
 		xfer[2] = LIST_FIRST(&(info->done_head));
 		if (xfer[2] == NULL) {
 			dropcount = 2;
-			goto lockchange_0;
+			break;
 		}
 		LIST_REMOVE(xfer[2], done_list);
 		xfer[2]->done_list.le_prev = NULL;
 		xfer[3] = LIST_FIRST(&(info->done_head));
 		if (xfer[3] == NULL) {
 			dropcount = 3;
-			goto lockchange_0;
+			break;
 		}
 		LIST_REMOVE(xfer[3], done_list);
 		xfer[3]->done_list.le_prev = NULL;
 		dropcount = 4;
-lockchange_0:
+	  } while (0);
+
 		mtx_unlock(info->usb_mtx);
 
 		/*
@@ -2144,20 +2146,18 @@
 		mtx_lock(info->priv_mtx);
 
 		/* call callback(s) */
+		switch (dropcount) {
+		case 4:
+		usbd_callback_wrapper(xfer[3], info, USBD_CONTEXT_CALLBACK);
+		case 3:
+		usbd_callback_wrapper(xfer[2], info, USBD_CONTEXT_CALLBACK);
+		case 2:
+		usbd_callback_wrapper(xfer[1], info, USBD_CONTEXT_CALLBACK);
+		case 1:
 		usbd_callback_wrapper(xfer[0], info, USBD_CONTEXT_CALLBACK);
-		if (xfer[1] == NULL) {
-			goto lockchange_1;
-		}
-		usbd_callback_wrapper(xfer[1], info, USBD_CONTEXT_CALLBACK);
-		if (xfer[2] == NULL) {
-			goto lockchange_1;
-		}
-		usbd_callback_wrapper(xfer[2], info, USBD_CONTEXT_CALLBACK);
-		if (xfer[3] == NULL) {
-			goto lockchange_1;
+		default:
+			break;
 		}
-		usbd_callback_wrapper(xfer[3], info, USBD_CONTEXT_CALLBACK);
-lockchange_1:
 		mtx_unlock(info->priv_mtx);
 
 		mtx_lock(info->usb_mtx);


More information about the p4-projects mailing list