From 0c0aa90a907f8cfeca47c2dc965f1642f05f502e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Tue, 27 Nov 2018 19:55:38 -0600 Subject: [PATCH] setupapi: Avoid unnecessary buffer allocation in SETUPDI_EnumerateMatchingDeviceInstances(). Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- 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 ff7aca089b3..55fca897c39 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); } } }