mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 08:30:21 +00:00
[REG]
- Fix a memory leak and bug in the deletion routine. If the buffer value_name was had been smaller than the longest key, then deletion of all values would have failed. - Fixed by Amine Khaldi [XCOPY] - Remove unnecessary assignment - By Amine Khaldi svn path=/trunk/; revision=44563
This commit is contained in:
parent
98826b3fe1
commit
73c9bff8cc
2 changed files with 8 additions and 4 deletions
|
@ -295,20 +295,24 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
maxValue++;
|
maxValue++;
|
||||||
|
|
||||||
szValue = HeapAlloc(GetProcessHeap(),0,maxValue*sizeof(WCHAR));
|
szValue = HeapAlloc(GetProcessHeap(),0,maxValue*sizeof(WCHAR));
|
||||||
|
if (!szValue) return 1;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
count = maxValue;
|
count = maxValue;
|
||||||
rc = RegEnumValueW(subkey, 0, value_name, &count, NULL, NULL, NULL, NULL);
|
rc = RegEnumValueW(subkey, 0, szValue, &count, NULL, NULL, NULL, NULL);
|
||||||
if (rc == ERROR_SUCCESS)
|
if (rc == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
rc = RegDeleteValueW(subkey,value_name);
|
rc = RegDeleteValueW(subkey,szValue);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, szValue);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
/* FIXME delete failed */
|
/* FIXME delete failed */
|
||||||
|
|
|
@ -261,10 +261,10 @@ int wmain (int argc, WCHAR *argvW[])
|
||||||
WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination));
|
WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination));
|
||||||
|
|
||||||
/* Extract required information from source specification */
|
/* Extract required information from source specification */
|
||||||
rc = XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
|
XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
|
||||||
|
|
||||||
/* Extract required information from destination specification */
|
/* Extract required information from destination specification */
|
||||||
rc = XCOPY_ProcessDestParm(supplieddestination, destinationstem,
|
XCOPY_ProcessDestParm(supplieddestination, destinationstem,
|
||||||
destinationspec, sourcespec, flags);
|
destinationspec, sourcespec, flags);
|
||||||
|
|
||||||
/* Trace out the resulting information */
|
/* Trace out the resulting information */
|
||||||
|
|
Loading…
Reference in a new issue