Dynamically resize buffer as needed

svn path=/trunk/; revision=12350
This commit is contained in:
Gé van Geldorp 2004-12-26 23:31:00 +00:00
parent 8bbd20efdc
commit e4514c3fed

View file

@ -706,7 +706,7 @@ int main (int argc, char *argv[])
} }
/* Allocate buffer */ /* Allocate buffer */
dwSize = 1024; dwSize = 2048;
lpBuffer = malloc(dwSize); lpBuffer = malloc(dwSize);
if (lpBuffer == NULL) if (lpBuffer == NULL)
{ {
@ -715,19 +715,28 @@ int main (int argc, char *argv[])
return 0; return 0;
} }
lError = RegQueryValueEx(hPnpKey, do
"Configuration Data", {
NULL, lError = RegQueryValueEx(hPnpKey,
&dwType, "Configuration Data",
(LPBYTE)lpBuffer, NULL,
&dwSize); &dwType,
(LPBYTE)lpBuffer,
&dwSize);
if (lError == ERROR_MORE_DATA)
{
lpBuffer = realloc(lpBuffer, dwSize);
if (lpBuffer == NULL)
{
printf("Error: realloc() of %u bytes failed\n", (unsigned) dwSize);
RegCloseKey(hPnpKey);
return 0;
}
}
}
while (lError == ERROR_MORE_DATA);
if (lError != ERROR_SUCCESS) if (lError != ERROR_SUCCESS)
{ {
if (lError == ERROR_MORE_DATA)
{
printf("Need to resize buffer to %lu\n", dwSize);
}
printf("Failed to read 'Configuration Data' value\n"); printf("Failed to read 'Configuration Data' value\n");
free(lpBuffer); free(lpBuffer);
RegCloseKey(hPnpKey); RegCloseKey(hPnpKey);