diff --git a/reactos/lib/advapi32/reg/reg.c b/reactos/lib/advapi32/reg/reg.c index bbba477e8b2..cb383a446ae 100644 --- a/reactos/lib/advapi32/reg/reg.c +++ b/reactos/lib/advapi32/reg/reg.c @@ -1479,14 +1479,18 @@ ReadFirstSubKey: } 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; }