Francois Gouget : usbd.sys: Fix the test for type control endpoints.

Alexandre Julliard julliard at winehq.org
Thu Jun 24 11:15:22 CDT 2010


Module: wine
Branch: master
Commit: 3c58b1a6f699f308780900223a841df84da5dcad
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3c58b1a6f699f308780900223a841df84da5dcad

Author: Francois Gouget <fgouget at free.fr>
Date:   Thu Jun 24 10:17:22 2010 +0200

usbd.sys: Fix the test for type control endpoints.

The value of USB_ENDPOINT_TYPE_CONTROL is 0 so and-ing with it makes no sense.

---

 dlls/usbd.sys/usbd.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dlls/usbd.sys/usbd.c b/dlls/usbd.sys/usbd.c
index 4727512..80fd02e 100644
--- a/dlls/usbd.sys/usbd.c
+++ b/dlls/usbd.sys/usbd.c
@@ -125,14 +125,21 @@ PURB WINAPI USBD_CreateConfigurationRequestEx(
                 interfaceInfo->Pipes[i].MaximumPacketSize = endpointDescriptor->wMaxPacketSize;
                 interfaceInfo->Pipes[i].EndpointAddress = endpointDescriptor->bEndpointAddress;
                 interfaceInfo->Pipes[i].Interval = endpointDescriptor->bInterval;
-                if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_CONTROL)
+                switch (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_MASK)
+                {
+                case USB_ENDPOINT_TYPE_CONTROL:
                     interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeControl;
-                else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_BULK)
+                    break;
+                case USB_ENDPOINT_TYPE_BULK:
                     interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeBulk;
-                else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_INTERRUPT)
+                    break;
+                case USB_ENDPOINT_TYPE_INTERRUPT:
                     interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeInterrupt;
-                else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_ISOCHRONOUS)
+                    break;
+                case USB_ENDPOINT_TYPE_ISOCHRONOUS:
                     interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeIsochronous;
+                    break;
+                }
                 endpointDescriptor = (PUSB_ENDPOINT_DESCRIPTOR) USBD_ParseDescriptors(
                     ConfigurationDescriptor, ConfigurationDescriptor->wTotalLength,
                     endpointDescriptor + 1, USB_ENDPOINT_DESCRIPTOR_TYPE );




More information about the wine-cvs mailing list