]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/BMMUI: Make the BmmFakeNvData and BmmOldFakeNVData consistent
authorDandan Bi <dandan.bi@intel.com>
Mon, 17 Oct 2016 06:04:21 +0000 (14:04 +0800)
committerStar Zeng <star.zeng@intel.com>
Wed, 19 Oct 2016 03:37:51 +0000 (11:37 +0800)
In BootMaintRouteConfig function, it will compare the data in BmmFakeNvData
and BmmOldFakeNVData to see whether there are some changes need to save.
In current codes when discarding changes or removing the useless changes,
it will update the related fields in BmmFakeNvData.
But also need to update related fields in BmmOldFakeNVData,
or it will result in incorrect comparison in BootMaintRouteConfig function,
then resulting in incorrect UI behaviors.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c

index 92c44ea867ac43a803151bc7a1f8776b9c3b51df..7475a94a2791d8baa21e2ac4452f2ea26bfc8927 100644 (file)
@@ -925,6 +925,7 @@ BootMaintCallback (
   BMM_CALLBACK_DATA *Private;\r
   BM_MENU_ENTRY     *NewMenuEntry;\r
   BMM_FAKE_NV_DATA  *CurrentFakeNVMap;\r
+  BMM_FAKE_NV_DATA  *OldFakeNVMap;\r
   UINTN             Index;\r
   EFI_DEVICE_PATH_PROTOCOL * File;\r
 \r
@@ -959,6 +960,7 @@ BootMaintCallback (
   // Retrive uncommitted data from Form Browser\r
   //\r
   CurrentFakeNVMap = &Private->BmmFakeNvData;\r
+  OldFakeNVMap     = &Private->BmmOldFakeNVData;\r
   HiiGetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap);\r
 \r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
@@ -1061,8 +1063,10 @@ BootMaintCallback (
       //\r
       // Discard changes and exit formset\r
       //\r
-      CurrentFakeNVMap->DriverOptionalData[0]     = 0x0000;\r
-      CurrentFakeNVMap->DriverDescriptionData[0]  = 0x0000;\r
+      ZeroMem (CurrentFakeNVMap->DriverOptionalData, sizeof (CurrentFakeNVMap->DriverOptionalData));\r
+      ZeroMem (CurrentFakeNVMap->BootDescriptionData, sizeof (CurrentFakeNVMap->BootDescriptionData));\r
+      ZeroMem (OldFakeNVMap->DriverOptionalData, sizeof (OldFakeNVMap->DriverOptionalData));\r
+      ZeroMem (OldFakeNVMap->DriverDescriptionData, sizeof (OldFakeNVMap->DriverDescriptionData));\r
       CurrentFakeNVMap->DriverOptionChanged = FALSE;\r
       CurrentFakeNVMap->ForceReconnect      = TRUE;\r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;\r
@@ -1070,8 +1074,10 @@ BootMaintCallback (
       //\r
       // Discard changes and exit formset\r
       //\r
-      CurrentFakeNVMap->BootOptionalData[0]     = 0x0000;\r
-      CurrentFakeNVMap->BootDescriptionData[0]  = 0x0000;\r
+      ZeroMem (CurrentFakeNVMap->BootOptionalData, sizeof (CurrentFakeNVMap->BootOptionalData));\r
+      ZeroMem (CurrentFakeNVMap->BootDescriptionData, sizeof (CurrentFakeNVMap->BootDescriptionData));\r
+      ZeroMem (OldFakeNVMap->BootOptionalData, sizeof (OldFakeNVMap->BootOptionalData));\r
+      ZeroMem (OldFakeNVMap->BootDescriptionData, sizeof (OldFakeNVMap->BootDescriptionData));\r
       CurrentFakeNVMap->BootOptionChanged = FALSE;\r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;\r
     } else if (QuestionId == KEY_VALUE_BOOT_DESCRIPTION || QuestionId == KEY_VALUE_BOOT_OPTION) {\r
index 960d0b0f9d89faba5f744ad90c51a3cb10a002f6..29d3ac9a47d3c02bdeba78f11fa38465d6388db0 100644 (file)
@@ -262,6 +262,7 @@ UpdateBootDelPage (
       // through HiiSetBrowserData function.\r
       //\r
       CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;\r
+      CallbackData->BmmOldFakeNVData.BootOptionDel[Index] = FALSE;\r
     }\r
     \r
     HiiCreateCheckBoxOpCode (\r
@@ -348,6 +349,7 @@ UpdateDrvDelPage (
       // through HiiSetBrowserData function.\r
       //\r
       CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;\r
+      CallbackData->BmmOldFakeNVData.DriverOptionDel[Index] = FALSE;\r
     }\r
     HiiCreateCheckBoxOpCode (\r
       mStartOpCodeHandle,\r
@@ -1025,11 +1027,15 @@ UpdateOptionPage(
     if (!CallbackData->BmmFakeNvData.BootOptionChanged) {\r
       ZeroMem (CallbackData->BmmFakeNvData.BootOptionalData, sizeof (CallbackData->BmmFakeNvData.BootOptionalData));\r
       ZeroMem (CallbackData->BmmFakeNvData.BootDescriptionData, sizeof (CallbackData->BmmFakeNvData.BootDescriptionData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.BootOptionalData, sizeof (CallbackData->BmmOldFakeNVData.BootOptionalData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.BootDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.BootDescriptionData));\r
     }\r
   } else if (FormId == FORM_DRV_ADD_FILE_ID){\r
     if (!CallbackData->BmmFakeNvData.DriverOptionChanged) {\r
       ZeroMem (CallbackData->BmmFakeNvData.DriverOptionalData, sizeof (CallbackData->BmmFakeNvData.DriverOptionalData));\r
       ZeroMem (CallbackData->BmmFakeNvData.DriverDescriptionData, sizeof (CallbackData->BmmFakeNvData.DriverDescriptionData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.DriverOptionalData, sizeof (CallbackData->BmmOldFakeNVData.DriverOptionalData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.DriverDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.DriverDescriptionData));\r
     }\r
   }\r
 \r