summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-20 14:17:24 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-20 14:17:24 +0000
commitd4775f2a4c46a1ff5cda0724079f25aa302b06bd (patch)
tree69293cc55b6884808520992f183d2d8f74eb0f09 /EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
parent1a8802f76332b8c9374c9d392cbaff1dd229b765 (diff)
downloadedk2-platforms-d4775f2a4c46a1ff5cda0724079f25aa302b06bd.tar.xz
1) Add in fix to handle the case when a form is not related to a buffer storage.
2) Allocate Hii Handle from a bitfield array so Framework Hii Handle can be recycled. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5700 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c')
-rw-r--r--EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
index c9428a2328..3fc839ae89 100644
--- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
+++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
@@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#include "HiiDatabase.h"
+#include "HiiHandle.h"
HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;
@@ -43,20 +44,6 @@ HII_THUNK_PRIVATE_DATA mHiiThunkPrivateDataTempate = {
HiiGetKeyboardLayout
},
- //
- //StaticHiiHandle
- //The FRAMEWORK_EFI_HII_HANDLE starts from 1
- // and increase upwords untill reach the value of StaticPureUefiHiiHandle.
- // The code will assert to prevent overflow.
- (FRAMEWORK_EFI_HII_HANDLE) 1,
-
- //
- //StaticPureUefiHiiHandle
- //The Static FRAMEWORK_EFI_HII_HANDLE starts from 0xFFFF
- // and decrease downwords untill reach the value of StaticHiiHandle.
- // The code will assert to prevent overflow.
- //
- (FRAMEWORK_EFI_HII_HANDLE) 0xFFFF,
{
NULL, NULL //HiiHandleLinkList
},
@@ -111,6 +98,7 @@ Returns:
UINTN BufferLength;
EFI_HII_HANDLE *Buffer;
UINTN Index;
+ HII_THUNK_CONTEXT *ThunkContext;
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiProtocolGuid);
@@ -119,6 +107,8 @@ Returns:
ASSERT (Private != NULL);
InitializeListHead (&Private->ThunkContextListHead);
+ InitHiiHandleDatabase ();
+
mHiiThunkPrivateData = Private;
Status = gBS->LocateProtocol (
@@ -174,8 +164,10 @@ Returns:
Status = HiiLibListPackageLists (EFI_HII_PACKAGE_STRINGS, NULL, &BufferLength, &Buffer);
if (Status == EFI_SUCCESS) {
for (Index = 0; Index < BufferLength / sizeof (EFI_HII_HANDLE); Index++) {
- CreateThunkContextForUefiHiiHandle (Private, Buffer[Index]);
- ASSERT_EFI_ERROR (Status);
+ ThunkContext = CreateThunkContextForUefiHiiHandle (Buffer[Index]);
+ ASSERT (ThunkContext!= NULL);
+
+ InsertTailList (&Private->ThunkContextListHead, &ThunkContext->Link);
}
FreePool (Buffer);