don't leak memory in RegDeleteTree() when NtEnumerateKey() returns an
unexpected error code (such as when there's insufficient system
resources to perform the query)
Modified: trunk/reactos/lib/advapi32/reg/reg.c
_____
Modified: trunk/reactos/lib/advapi32/reg/reg.c
--- trunk/reactos/lib/advapi32/reg/reg.c 2005-10-03 22:46:49 UTC
(rev 18254)
+++ trunk/reactos/lib/advapi32/reg/reg.c 2005-10-03 23:01:10 UTC
(rev 18255)
@@ -1479,14 +1479,18 @@
}
SubKeyFailure:
- ASSERT(newDelKeys != NULL);
- RtlFreeHeap(ProcessHeap,
- 0,
- newDelKeys);
+ /* newDelKeys can be NULL here when NtEnumerateKey
returned an
+ error other than STATUS_BUFFER_TOO_SMALL or
STATUS_BUFFER_OVERFLOW! */
+ if (newDelKeys != NULL)
+ {
+ RtlFreeHeap(ProcessHeap,
+ 0,
+ newDelKeys);
+ }
SubKeyFailureNoFree:
/* don't break, let's try to delete as many keys as
possible */
- if (Status2 != STATUS_NO_MORE_ENTRIES &&
NT_SUCCESS(Status))
+ if (NT_SUCCESS(Status))
{
Status = Status2;
}