]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Put free the buffer GraphicsOutput.Mode in correct place.
authorli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 1 Aug 2011 07:18:24 +0000 (07:18 +0000)
committerli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 1 Aug 2011 07:18:24 +0000 (07:18 +0000)
Signed-off-by: li-elvin
Reviewed-by: niruiyu
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12065 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/BiosVideo.c

index 76591e7a47a6523154dfc673a450a5e746a9d2c2..f2ad95d9fcb06e5e1e917c2b0a941b1642352597 100644 (file)
@@ -711,6 +711,19 @@ BiosVideoChildHandleInstall (
     }\r
 \r
     if (EFI_ERROR (Status)) {\r
+      //\r
+      // Free GOP mode structure if it is not freed before\r
+      // VgaMiniPort does not need this structure any more\r
+      //\r
+      if (BiosVideoPrivate->GraphicsOutput.Mode != NULL) {\r
+        if (BiosVideoPrivate->GraphicsOutput.Mode->Info != NULL) {\r
+          FreePool (BiosVideoPrivate->GraphicsOutput.Mode->Info);\r
+          BiosVideoPrivate->GraphicsOutput.Mode->Info = NULL;\r
+        }\r
+        FreePool (BiosVideoPrivate->GraphicsOutput.Mode);\r
+        BiosVideoPrivate->GraphicsOutput.Mode = NULL;\r
+      }\r
+\r
       //\r
       // Neither VBE nor the standard 640x480 16 color VGA mode are supported, so do\r
       // not produce the Graphics Output protocol.  Instead, produce the VGA MiniPort Protocol.\r
@@ -993,8 +1006,10 @@ BiosVideoDeviceReleaseResource (
   if (BiosVideoPrivate->GraphicsOutput.Mode != NULL) {\r
     if (BiosVideoPrivate->GraphicsOutput.Mode->Info != NULL) {\r
         FreePool (BiosVideoPrivate->GraphicsOutput.Mode->Info);\r
+        BiosVideoPrivate->GraphicsOutput.Mode->Info = NULL;\r
     }\r
     FreePool (BiosVideoPrivate->GraphicsOutput.Mode);\r
+    BiosVideoPrivate->GraphicsOutput.Mode = NULL;\r
   }\r
   //\r
   // Free EDID discovered protocol occupied resource\r
@@ -1634,14 +1649,6 @@ Done:
       BiosVideoPrivate->ModeData  = NULL;\r
       BiosVideoPrivate->MaxMode   = 0;\r
     }\r
-    if (BiosVideoPrivate->GraphicsOutput.Mode != NULL) {\r
-      if (BiosVideoPrivate->GraphicsOutput.Mode->Info != NULL) {\r
-        FreePool (BiosVideoPrivate->GraphicsOutput.Mode->Info);\r
-        BiosVideoPrivate->GraphicsOutput.Mode->Info = NULL;\r
-      }\r
-      FreePool (BiosVideoPrivate->GraphicsOutput.Mode);\r
-      BiosVideoPrivate->GraphicsOutput.Mode= NULL;\r
-    }\r
     if (EdidOverrideDataBlock != NULL) {\r
       FreePool (EdidOverrideDataBlock);\r
     }\r