BDS code calls Hii->FindHandles() with hardcoded length.
New code provides function BdsLibGetHiiHandles() in generic BDS library, which detects actual necessary memory, allocates memory, and finds handles as output. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2216 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -464,8 +464,12 @@ Returns:
|
||||
EFI_GUID HiiGuid;
|
||||
EFI_HII_PROTOCOL *Hii;
|
||||
|
||||
HandleBufferLength = 0x1000;
|
||||
//
|
||||
// Initialize params.
|
||||
//
|
||||
HandleBufferLength = 0;
|
||||
HiiHandleBuffer = NULL;
|
||||
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiHiiProtocolGuid,
|
||||
NULL,
|
||||
@@ -478,12 +482,9 @@ Returns:
|
||||
//
|
||||
// Get all the Hii handles
|
||||
//
|
||||
HiiHandleBuffer = AllocateZeroPool (HandleBufferLength);
|
||||
ASSERT (HiiHandleBuffer != NULL);
|
||||
|
||||
Status = Hii->FindHandles (Hii, &HandleBufferLength, HiiHandleBuffer);
|
||||
Status = BdsLibGetHiiHandles (Hii, &HandleBufferLength, &HiiHandleBuffer);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
|
||||
//
|
||||
// Get the Hii Handle that matches the StructureNode->ProducerName
|
||||
//
|
||||
|
@@ -201,6 +201,7 @@ Returns:
|
||||
|
||||
IfrOptionList = NULL;
|
||||
VideoOption = NULL;
|
||||
HiiHandles = NULL;
|
||||
HandleBufferLength = 0;
|
||||
|
||||
//
|
||||
@@ -268,8 +269,11 @@ Returns:
|
||||
CreateSubTitleOpCode (STR_EMPTY_STRING, &UpdateData->Data);
|
||||
Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) Count, TRUE, UpdateData);
|
||||
|
||||
HiiHandles = AllocateZeroPool (HandleBufferLength);
|
||||
Hii->FindHandles (Hii, &HandleBufferLength, HiiHandles);
|
||||
//
|
||||
// Get all the Hii handles
|
||||
//
|
||||
Status = BdsLibGetHiiHandles (Hii, &HandleBufferLength, &HiiHandles);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
for (Index = 1, BufferSize = 0; Index < HandleBufferLength; Index++) {
|
||||
//
|
||||
@@ -487,6 +491,7 @@ Returns:
|
||||
}
|
||||
|
||||
gBS->FreePool (UpdateData);
|
||||
gBS->FreePool (HiiHandles);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
@@ -485,15 +485,16 @@ Returns:
|
||||
UINT16 Length;
|
||||
EFI_GUID HiiGuid;
|
||||
|
||||
HandleBufferLength = 0x1000;
|
||||
//
|
||||
// Initialize params.
|
||||
//
|
||||
HandleBufferLength = 0;
|
||||
HiiHandleBuffer = NULL;
|
||||
|
||||
//
|
||||
// Get all the Hii handles
|
||||
//
|
||||
HiiHandleBuffer = AllocateZeroPool (HandleBufferLength);
|
||||
|
||||
Status = Hii->FindHandles (Hii, &HandleBufferLength, HiiHandleBuffer);
|
||||
Status = BdsLibGetHiiHandles (Hii, &HandleBufferLength, &HiiHandleBuffer);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user