mountmgr.sys: Fix enumerating USB devices with libusb-0.1 (eterbug #4301).
authorAlexander Morozov <amorozov@etersoft.ru>
Wed, 9 Feb 2011 14:44:00 +0000 (17:44 +0300)
committerTest Robot <wine-patches-test@office.etersoft.ru>
Fri, 4 Mar 2011 13:52:37 +0000 (16:52 +0300)
dlls/mountmgr.sys/usbhub.c

index b83cee5cf232c5197c366d62d0d8cfceee836937..6cf589332ab8b581b00e95cf2679083d142b8aba 100644 (file)
@@ -1671,20 +1671,20 @@ static DWORD CALLBACK enum_usb_devices( void *usbhubdrv )
         for (dev = bus->devices; dev; dev = dev->next)
         {
             if (dev->devnum > 1) continue;
-            desc = &bus->devices->descriptor;
-            create_root_hub_device( desc->idVendor, desc->idProduct,
-                    bus->devices, usbhubdrv );
+            desc = &dev->descriptor;
+            create_root_hub_device( desc->idVendor, desc->idProduct, dev,
+                    usbhubdrv );
         }
     for (bus = usb_busses; bus; bus = bus->next)
         for (dev = bus->devices; dev; dev = dev->next)
         {
             if (dev->devnum <= 1) continue;
+            desc = &dev->descriptor;
             new_device = TRUE;
             LIST_FOR_EACH_ENTRY( instance, &Devices, struct DeviceInstance, entry )
             {
-                if (instance->dev == NULL &&
-                    dev->descriptor.idVendor == instance->vid &&
-                    dev->descriptor.idProduct == instance->pid)
+                if (instance->dev == NULL && desc->idVendor == instance->vid &&
+                    desc->idProduct == instance->pid)
                 {
                     instance->dev = dev;
                     new_device = FALSE;
@@ -1692,8 +1692,7 @@ static DWORD CALLBACK enum_usb_devices( void *usbhubdrv )
                 }
             }
             if (new_device)
-                register_usb_device( dev->descriptor.idVendor,
-                        dev->descriptor.idProduct, dev );
+                register_usb_device( desc->idVendor, desc->idProduct, dev );
         }
 #endif
     start_root_devices( usbhubdrv );