*HandleType = AllocateZeroPool (*HandleCount * sizeof (UINTN));\r
if (*HandleType == NULL) {\r
SHELL_FREE_NON_NULL (*HandleBuffer);\r
+ *HandleCount = 0;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
// Allocate a handle buffer for the number of handles that matched the attributes in Mask\r
//\r
*MatchingHandleBuffer = AllocateZeroPool ((*MatchingHandleCount +1)* sizeof (EFI_HANDLE));\r
- if (*MatchingHandleBuffer != NULL) {\r
+ if (*MatchingHandleBuffer == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ } else {\r
for (HandleIndex = 0, *MatchingHandleCount = 0\r
; HandleIndex < HandleCount\r
; HandleIndex++\r
(*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
\r
Status = EFI_SUCCESS;\r
- } // *MatchingHandleBuffer != NULL (IF)\r
+ } // *MatchingHandleBuffer == NULL (ELSE)\r
} // MacthingHandleBuffer == NULL (ELSE)\r
} // *MatchingHandleCount == 0 (ELSE)\r
} // no error on ParseHandleDatabaseByRelationshipWithType\r
FreePool (HandleType);\r
}\r
\r
+ ASSERT ((MatchingHandleBuffer == NULL) ||\r
+ (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+ (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
return Status;\r
}\r
\r
} else {\r
FreePool(HandleBufferForReturn);\r
}\r
+ ASSERT ((MatchingHandleBuffer == NULL) ||\r
+ (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+ (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
\r
return (EFI_SUCCESS);\r
}\r