summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-20 08:12:38 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-20 08:12:38 +0000
commit6412128af3f7a7e118605109713edf2f3dae3bd6 (patch)
tree3111be7ee1a5e165b06654ebf0c0b180ed2eb0fb
parent2fd618df9dff28e18b553a6e5027470fe58eb61d (diff)
downloadedk2-6412128af3f7a7e118605109713edf2f3dae3bd6.zip
edk2-6412128af3f7a7e118605109713edf2f3dae3bd6.tar.gz
edk2-6412128af3f7a7e118605109713edf2f3dae3bd6.tar.bz2
Enhance HiiGetBrowserData API to support the case that storage element is 0.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8135 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c4
-rw-r--r--MdeModulePkg/Library/UefiHiiLib/HiiLib.c9
2 files changed, 11 insertions, 2 deletions
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
index 2b175a5..982db88 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
@@ -273,7 +273,7 @@ BootMaintCallback (
//
CurrentFakeNVMap = (BMM_FAKE_NV_DATA *) HiiGetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA));
if (CurrentFakeNVMap == NULL) {
- CurrentFakeNVMap = &Private->BmmFakeNvData;
+ return EFI_NOT_FOUND;
}
//
@@ -590,7 +590,7 @@ BootMaintCallback (
//
// Update local settting.
//
- if ((UINTN) CurrentFakeNVMap != (UINTN) &Private->BmmFakeNvData) {
+ if (CurrentFakeNVMap != NULL) {
CopyMem (&Private->BmmFakeNvData, CurrentFakeNVMap, sizeof (BMM_FAKE_NV_DATA));
FreePool (CurrentFakeNVMap);
}
diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
index d36828a..ea3c223 100644
--- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
+++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
@@ -564,6 +564,15 @@ InternalHiiBrowserCallback (
VariableGuid,
VariableName
);
+
+ if (!EFI_ERROR (Status)) {
+ //
+ // No Resluts Data, only allocate one char for '\0'
+ //
+ ResultsData = AllocateZeroPool (sizeof (CHAR16));
+ return ResultsData;
+ }
+
if (Status != EFI_BUFFER_TOO_SMALL) {
return NULL;
}