OUT EFI_HII_HANDLE **HiiHandleBuffer\r
)\r
{\r
- UINTN BufferLength;\r
EFI_STATUS Status;\r
\r
ASSERT (HandleBufferLength != NULL);\r
ASSERT (HiiHandleBuffer != NULL);\r
\r
- BufferLength = 0;\r
+ *HandleBufferLength = 0;\r
+ *HiiHandleBuffer = NULL;\r
\r
//\r
// Try to find the actual buffer size for HiiHandle Buffer.\r
mHiiDatabaseProt,\r
EFI_HII_PACKAGE_TYPE_ALL,\r
NULL,\r
- &BufferLength,\r
+ HandleBufferLength,\r
*HiiHandleBuffer\r
);\r
-\r
+ \r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
- *HiiHandleBuffer = AllocateZeroPool (BufferLength);\r
+ *HiiHandleBuffer = AllocateZeroPool (*HandleBufferLength);\r
ASSERT (*HiiHandleBuffer != NULL);\r
Status = mHiiDatabaseProt->ListPackageLists (\r
mHiiDatabaseProt,\r
EFI_HII_PACKAGE_TYPE_ALL,\r
NULL,\r
- &BufferLength,\r
+ HandleBufferLength,\r
*HiiHandleBuffer\r
);\r
- //\r
- // we should not fail here.\r
- //\r
- ASSERT_EFI_ERROR (Status);\r
- }\r
\r
- *HandleBufferLength = BufferLength;\r
+ if (EFI_ERROR (Status)) {\r
+ FreePool (*HiiHandleBuffer);\r
+ *HiiHandleBuffer = NULL;\r
+ }\r
+ }\r
\r
return Status;\r
}\r