]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Refine the fix for the bug that cause assert when do the reconnect in the callback...
authorEric Dong <eric.dong@intel.com>
Wed, 27 Aug 2014 03:29:01 +0000 (03:29 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 27 Aug 2014 03:29:01 +0000 (03:29 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15914 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.c

index 42af5f710326fa082300e3c6794df1d2a7a4c240..f0617f81b3db7667d652f6817e522d7147f6b154 100644 (file)
@@ -1985,17 +1985,6 @@ ProcessCallBackFunction (
                              TypeValue,\r
                              &ActionRequest\r
                              );\r
-    //\r
-    // IFR is updated, force to reparse the IFR binary\r
-    //\r
-    if (mHiiPackageListUpdated) {\r
-      if (BackUpBuffer != NULL) {\r
-        FreePool (BackUpBuffer);\r
-      }\r
-\r
-      return EFI_SUCCESS;\r
-    }\r
-\r
     if (!EFI_ERROR (Status)) {\r
       //\r
       // Need to sync the value between Statement->HiiValue->Value and Statement->BufferValue\r
@@ -2412,15 +2401,6 @@ SetupBrowser (
           ((Statement->QuestionFlags & EFI_IFR_FLAG_CALLBACK) == EFI_IFR_FLAG_CALLBACK) && \r
           (Statement->Operand != EFI_IFR_PASSWORD_OP)) {\r
         Status = ProcessCallBackFunction(Selection, Selection->FormSet, Selection->Form, Statement, EFI_BROWSER_ACTION_CHANGING, FALSE);\r
-        //\r
-        // IFR is updated during callback of EFI_BROWSER_ACTION_CHANGING, force to reparse the IFR binary\r
-        //\r
-        if (mHiiPackageListUpdated) {\r
-          Selection->Action = UI_ACTION_REFRESH_FORMSET;\r
-          mHiiPackageListUpdated = FALSE;\r
-          break;\r
-        }\r
-\r
         if (Statement->Operand == EFI_IFR_REF_OP) {\r
           //\r
           // Process dynamic update ref opcode.\r
@@ -2448,14 +2428,6 @@ SetupBrowser (
 \r
         if (!EFI_ERROR (Status) && Statement->Operand != EFI_IFR_REF_OP) {\r
           ProcessCallBackFunction(Selection, Selection->FormSet, Selection->Form, Statement, EFI_BROWSER_ACTION_CHANGED, FALSE);\r
-          //\r
-          // IFR is updated during callback of EFI_BROWSER_ACTION_CHANGED, force to reparse the IFR binary\r
-          //\r
-          if (mHiiPackageListUpdated) {\r
-            Selection->Action = UI_ACTION_REFRESH_FORMSET;\r
-            mHiiPackageListUpdated = FALSE;\r
-            break;\r
-          }\r
         }\r
       } else {\r
         //\r
index a8bbd582b5b6ccc4cc9be938dfbf0ea5037108c1..2b09593b9115b148bd0888272cf8989452ca5f5a 100644 (file)
@@ -2449,7 +2449,10 @@ ValidateFormSet (
   ASSERT (FormSet != NULL);\r
 \r
   Find = ValidateHiiHandle(FormSet->HiiHandle);\r
-  if (!Find) {\r
+  //\r
+  // Should not remove the formset which is being used.\r
+  //\r
+  if (!Find && (FormSet != gCurrentSelection->FormSet)) {\r
     CleanBrowserStorage(FormSet);\r
     RemoveEntryList (&FormSet->Link);\r
     DestroyFormSet (FormSet);\r