]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix a bug that when user can't presses F9 to restore the NV Map data into default...
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Aug 2007 06:09:22 +0000 (06:09 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Aug 2007 06:09:22 +0000 (06:09 +0000)
Setup Browser implementation has a bug to only restore the NV Map data for the first varstore ID.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3622 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Universal/SetupBrowserDxe/Ui.c

index 127b55026266cad8db3f6550a048ee57caab187f..dd56cfbcf75ef3897a62844348a17dabe4d6cdef 100644 (file)
@@ -1441,6 +1441,7 @@ Returns:
   MENU_REFRESH_ENTRY          *OldMenuRefreshEntry;\r
   UI_SCREEN_OPERATION         ScreenOperation;\r
   EFI_VARIABLE_DEFINITION     *VariableDefinition;\r
+  EFI_VARIABLE_DEFINITION     *UiDefaultVarDef; // Only used in CfUiDefault State\r
   EFI_FORM_CALLBACK_PROTOCOL  *FormCallback;\r
   EFI_HII_VARIABLE_PACK_LIST  *NvMapListHead;\r
   EFI_HII_VARIABLE_PACK_LIST  *NvMapListNode;\r
@@ -2977,34 +2978,40 @@ Returns:
         NvMapListNode = NvMapListHead;\r
 \r
         while (NULL != NvMapListNode) {\r
-          if (FileFormTags->VariableDefinitions->VariableId == NvMapListNode->VariablePack->VariableId) {\r
-            NvMap     = (VOID *) ((CHAR8 *) NvMapListNode->VariablePack + sizeof (EFI_HII_VARIABLE_PACK) + NvMapListNode->VariablePack->VariableNameLength);\r
-            NvMapSize = NvMapListNode->VariablePack->Header.Length  - sizeof (EFI_HII_VARIABLE_PACK) - NvMapListNode->VariablePack->VariableNameLength;\r
-            break;\r
+          \r
+          for (UiDefaultVarDef = FileFormTags->VariableDefinitions;\r
+                UiDefaultVarDef != NULL; \r
+                UiDefaultVarDef = UiDefaultVarDef->Next ) {\r
+                \r
+            if (UiDefaultVarDef->VariableId == NvMapListNode->VariablePack->VariableId) {\r
+              NvMap     = (VOID *) ((CHAR8 *) NvMapListNode->VariablePack + sizeof (EFI_HII_VARIABLE_PACK) + NvMapListNode->VariablePack->VariableNameLength);\r
+              NvMapSize = NvMapListNode->VariablePack->Header.Length  - sizeof (EFI_HII_VARIABLE_PACK) - NvMapListNode->VariablePack->VariableNameLength;\r
+              //\r
+              // Free the buffer that was allocated.\r
+              //\r
+              FreePool (UiDefaultVarDef->NvRamMap);\r
+              FreePool (UiDefaultVarDef->FakeNvRamMap);\r
+              \r
+              //\r
+              // Allocate, copy the NvRamMap.\r
+              //\r
+              UiDefaultVarDef->VariableFakeSize = (UINT16) (UiDefaultVarDef->VariableFakeSize - UiDefaultVarDef->VariableSize);\r
+              UiDefaultVarDef->VariableSize = (UINT16) NvMapSize;\r
+              UiDefaultVarDef->VariableFakeSize = (UINT16) (UiDefaultVarDef->VariableFakeSize + UiDefaultVarDef->VariableSize);\r
+              \r
+              UiDefaultVarDef->NvRamMap = AllocateZeroPool (FileFormTags->VariableDefinitions->VariableSize);\r
+              ASSERT (UiDefaultVarDef->NvRamMap != NULL);\r
+              \r
+              UiDefaultVarDef->FakeNvRamMap = AllocateZeroPool (NvMapSize + UiDefaultVarDef->VariableFakeSize);\r
+              ASSERT (UiDefaultVarDef->FakeNvRamMap != NULL);\r
+              \r
+              CopyMem (UiDefaultVarDef->NvRamMap, NvMap, NvMapSize);\r
+              break;\r
             }\r
+          }\r
           NvMapListNode = NvMapListNode->NextVariablePack;\r
         }\r
 \r
-        //\r
-        // Free the buffer that was allocated.\r
-        //\r
-        FreePool (FileFormTags->VariableDefinitions->NvRamMap);\r
-        FreePool (FileFormTags->VariableDefinitions->FakeNvRamMap);\r
-\r
-        //\r
-        // Allocate, copy the NvRamMap.\r
-        //\r
-        FileFormTags->VariableDefinitions->VariableFakeSize = (UINT16) (FileFormTags->VariableDefinitions->VariableFakeSize - FileFormTags->VariableDefinitions->VariableSize);\r
-        FileFormTags->VariableDefinitions->VariableSize = (UINT16) NvMapSize;\r
-        FileFormTags->VariableDefinitions->VariableFakeSize = (UINT16) (FileFormTags->VariableDefinitions->VariableFakeSize + FileFormTags->VariableDefinitions->VariableSize);\r
-\r
-        FileFormTags->VariableDefinitions->NvRamMap = AllocateZeroPool (FileFormTags->VariableDefinitions->VariableSize);\r
-        ASSERT (FileFormTags->VariableDefinitions->NvRamMap != NULL);\r
-\r
-        FileFormTags->VariableDefinitions->FakeNvRamMap = AllocateZeroPool (NvMapSize + FileFormTags->VariableDefinitions->VariableFakeSize);\r
-        ASSERT (FileFormTags->VariableDefinitions->FakeNvRamMap != NULL);\r
-\r
-        CopyMem (FileFormTags->VariableDefinitions->NvRamMap, NvMap, NvMapSize);\r
         FreePool (NvMapListHead);\r
       }\r
 \r