Module: wine Branch: master Commit: 0c0aa90a907f8cfeca47c2dc965f1642f05f502e URL: https://source.winehq.org/git/wine.git/?a=commit;h=0c0aa90a907f8cfeca47c2dc9...
Author: Zebediah Figura z.figura12@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@gmail.com Signed-off-by: Alexandre Julliard julliard@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); } } }