odbccp32: Avoid using RegQueryInfoKey() in SQLGetInstalledDrivers().

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2018-05-22 16:27:57 -05:00 committed by Alexandre Julliard
parent 737bbbecd7
commit 5eb8894e93

View File

@ -510,15 +510,20 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout)
return FALSE;
}
RegQueryInfoKeyW(drivers, 0, 0, 0, 0, 0, 0, 0, &valuelen, 0, 0, 0);
value = heap_alloc(++valuelen * sizeof(WCHAR));
valuelen = 256;
value = heap_alloc(valuelen * sizeof(WCHAR));
size--;
while (1)
{
len = valuelen;
res = RegEnumValueW(drivers, index++, value, &len, NULL, NULL, NULL, NULL);
res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL);
while (res == ERROR_MORE_DATA)
{
value = heap_realloc(value, ++len * sizeof(WCHAR));
res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL);
}
if (res == ERROR_SUCCESS)
{
lstrcpynW(buf + written, value, size - written);
@ -532,6 +537,7 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout)
ret = FALSE;
break;
}
index++;
}
buf[written++] = 0;