Zebediah Figura : setupapi: Avoid unnecessary buffer allocation in SETUPDI_EnumerateMatchingDeviceInstances ().

Alexandre Julliard julliard at winehq.org
Wed Nov 28 14:11:48 CST 2018


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Nov 27 19:55:38 2018 -0600

setupapi: Avoid unnecessary buffer allocation in SETUPDI_EnumerateMatchingDeviceInstances().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/setupapi/devinst.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index ff7aca0..55fca89 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -2083,6 +2083,7 @@ static void SETUPDI_EnumerateMatchingDeviceInstances(struct DeviceInfoSet *set,
         LPCWSTR enumerator, LPCWSTR deviceName, HKEY deviceKey,
         const GUID *class, DWORD flags)
 {
+    WCHAR id[MAX_DEVICE_ID_LEN];
     DWORD i, len;
     WCHAR deviceInstance[MAX_PATH];
     LONG l = ERROR_SUCCESS;
@@ -2120,18 +2121,11 @@ static void SETUPDI_EnumerateMatchingDeviceInstances(struct DeviceInfoSet *set,
                         {
                             static const WCHAR fmt[] =
                              {'%','s','\\','%','s','\\','%','s',0};
-                            LPWSTR instanceId;
 
-                            instanceId = HeapAlloc(GetProcessHeap(), 0,
-                                (lstrlenW(enumerator) + lstrlenW(deviceName) +
-                                lstrlenW(deviceInstance) + 3) * sizeof(WCHAR));
-                            if (instanceId)
+                            if (snprintfW(id, ARRAY_SIZE(id), fmt, enumerator,
+                                    deviceName, deviceInstance) != -1)
                             {
-                                sprintfW(instanceId, fmt, enumerator,
-                                        deviceName, deviceInstance);
-                                SETUPDI_CreateDeviceInfo(set, &deviceClass,
-                                        instanceId, FALSE);
-                                HeapFree(GetProcessHeap(), 0, instanceId);
+                                SETUPDI_CreateDeviceInfo(set, &deviceClass, id, FALSE);
                             }
                         }
                     }




More information about the wine-cvs mailing list