Module: wine Branch: master Commit: 3c58b1a6f699f308780900223a841df84da5dcad URL: http://source.winehq.org/git/wine.git/?a=commit;h=3c58b1a6f699f308780900223a...
Author: Francois Gouget fgouget@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 );