Rémi Bernon : user32: Remove unnecessary device path memory allocation.

Alexandre Julliard julliard at winehq.org
Fri Apr 16 15:56:22 CDT 2021


Module: wine
Branch: master
Commit: b3111f3a3207933e171c70adee3797ab7217ac59
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b3111f3a3207933e171c70adee3797ab7217ac59

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Apr 16 13:48:09 2021 +0200

user32: Remove unnecessary device path memory allocation.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/rawinput.c | 27 +++++++++------------------
 1 file changed, 9 insertions(+), 18 deletions(-)

diff --git a/dlls/user32/rawinput.c b/dlls/user32/rawinput.c
index ba11a121bc5..da3824b10ee 100644
--- a/dlls/user32/rawinput.c
+++ b/dlls/user32/rawinput.c
@@ -44,7 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(rawinput);
 
 struct device
 {
-    WCHAR *path;
+    SP_DEVICE_INTERFACE_DETAIL_DATA_W *detail;
     HANDLE file;
     RID_DEVICE_INFO info;
     PHIDP_PREPARSED_DATA data;
@@ -94,7 +94,6 @@ static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
     SP_DEVICE_INTERFACE_DETAIL_DATA_W *detail;
     struct device *device;
     HANDLE file;
-    WCHAR *path;
     DWORD size;
 
     SetupDiGetDeviceInterfaceDetailW(set, iface, NULL, 0, &size, NULL);
@@ -113,20 +112,12 @@ static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
 
     TRACE("Found HID device %s.\n", debugstr_w(detail->DevicePath));
 
-    if (!(path = heap_strdupW(detail->DevicePath)))
-    {
-        ERR("Failed to allocate memory.\n");
-        heap_free(detail);
-        return NULL;
-    }
-    heap_free(detail);
-
-    file = CreateFileW(path, GENERIC_READ | GENERIC_WRITE,
+    file = CreateFileW(detail->DevicePath, GENERIC_READ | GENERIC_WRITE,
             FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
     if (file == INVALID_HANDLE_VALUE)
     {
-        ERR("Failed to open device file %s, error %u.\n", debugstr_w(path), GetLastError());
-        heap_free(path);
+        ERR("Failed to open device file %s, error %u.\n", debugstr_w(detail->DevicePath), GetLastError());
+        heap_free(detail);
         return NULL;
     }
 
@@ -135,12 +126,12 @@ static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
     {
         ERR("Failed to allocate memory.\n");
         CloseHandle(file);
-        heap_free(path);
+        heap_free(detail);
         return NULL;
     }
 
     device = &rawinput_devices[rawinput_devices_count++];
-    device->path = path;
+    device->detail = detail;
     device->file = file;
     device->info.cbSize = sizeof(RID_DEVICE_INFO);
 
@@ -171,7 +162,7 @@ static void find_devices(void)
     for (idx = 0; idx < rawinput_devices_count; ++idx)
     {
         CloseHandle(rawinput_devices[idx].file);
-        heap_free(rawinput_devices[idx].path);
+        heap_free(rawinput_devices[idx].detail);
     }
     rawinput_devices_count = 0;
 
@@ -681,8 +672,8 @@ UINT WINAPI GetRawInputDeviceInfoW(HANDLE handle, UINT command, void *data, UINT
         }
         else
         {
-            *data_size = lstrlenW(device->path) + 1;
-            to_copy = device->path;
+            *data_size = lstrlenW(device->detail->DevicePath) + 1;
+            to_copy = device->detail->DevicePath;
         }
         to_copy_bytes = *data_size * sizeof(WCHAR);
         break;




More information about the wine-cvs mailing list