]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
Roll back changes to apply GetBestLanguage() in HiiDataBase. Exact language match...
[mirror_edk2.git] / MdeModulePkg / Universal / HiiDatabaseDxe / Database.c
index dcb56504dc5804d50ebe9e277ce7d1278740e568..918559e54490b4c875dba51e27ff89bad0872646 100644 (file)
@@ -19,7 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 //\r
 // Global variables\r
 //\r
-STATIC EFI_GUID mHiiDatabaseNotifyGuid = HII_DATABASE_NOTIFY_GUID;\r
+EFI_GUID mHiiDatabaseNotifyGuid = HII_DATABASE_NOTIFY_GUID;\r
 \r
 \r
 /**\r
@@ -58,7 +58,7 @@ GenerateHiiDatabaseRecord (
 \r
   DatabaseRecord->PackageList = AllocateZeroPool (sizeof (HII_DATABASE_PACKAGE_LIST_INSTANCE));\r
   if (DatabaseRecord->PackageList == NULL) {\r
-    SafeFreePool (DatabaseRecord);\r
+    FreePool (DatabaseRecord);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -78,8 +78,8 @@ GenerateHiiDatabaseRecord (
   //\r
   HiiHandle = (HII_HANDLE *) AllocateZeroPool (sizeof (HII_HANDLE));\r
   if (HiiHandle == NULL) {\r
-    SafeFreePool (DatabaseRecord->PackageList);\r
-    SafeFreePool (DatabaseRecord);\r
+    FreePool (DatabaseRecord->PackageList);\r
+    FreePool (DatabaseRecord);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
   HiiHandle->Signature = HII_HANDLE_SIGNATURE;\r
@@ -195,7 +195,7 @@ InvokeRegisteredFunction (
     Package = (EFI_HII_PACKAGE_HEADER *) (((HII_GUID_PACKAGE_INSTANCE *) PackageInstance)->GuidPkg);\r
     break;\r
 \r
-  case EFI_HII_PACKAGE_FORM:\r
+  case EFI_HII_PACKAGE_FORMS:\r
     BufferSize = ((HII_IFR_PACKAGE_INSTANCE *) PackageInstance)->FormPkgHdr.Length;\r
     Buffer = (UINT8 *) AllocateZeroPool (BufferSize);\r
     ASSERT (Buffer != NULL);\r
@@ -340,8 +340,9 @@ InvokeRegisteredFunction (
     }\r
   }\r
 \r
-  SafeFreePool (Buffer);\r
-  Buffer = NULL;\r
+  if (Buffer != NULL) {\r
+    FreePool (Buffer);\r
+  }\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -390,7 +391,7 @@ InsertGuidPackage (
   }\r
   GuidPackage->GuidPkg = (UINT8 *) AllocateZeroPool (PackageHeader.Length);\r
   if (GuidPackage->GuidPkg == NULL) {\r
-    SafeFreePool (GuidPackage);\r
+    FreePool (GuidPackage);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -524,8 +525,8 @@ RemoveGuidPackages (
     RemoveEntryList (&Package->GuidEntry);\r
     CopyMem (&PackageHeader, Package->GuidPkg, sizeof (EFI_HII_PACKAGE_HEADER));\r
     PackageList->PackageListHdr.PackageLength -= PackageHeader.Length;\r
-    SafeFreePool (Package->GuidPkg);\r
-    SafeFreePool (Package);\r
+    FreePool (Package->GuidPkg);\r
+    FreePool (Package);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -579,7 +580,7 @@ InsertFormPackage (
 \r
   FormPackage->IfrData = (UINT8 *) AllocateZeroPool (PackageHeader.Length - sizeof (EFI_HII_PACKAGE_HEADER));\r
   if (FormPackage->IfrData == NULL) {\r
-    SafeFreePool (FormPackage);\r
+    FreePool (FormPackage);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -658,7 +659,7 @@ ExportFormPackages (
   for (Link = PackageList->FormPkgHdr.ForwardLink; Link != &PackageList->FormPkgHdr; Link = Link->ForwardLink) {\r
     FormPackage = CR (Link, HII_IFR_PACKAGE_INSTANCE, IfrEntry, HII_IFR_PACKAGE_SIGNATURE);\r
     PackageLength += FormPackage->FormPkgHdr.Length;\r
-    if (PackageLength + *ResultSize + UsedSize <= BufferSize) {\r
+    if ((Buffer != NULL) && (PackageLength + *ResultSize + UsedSize <= BufferSize)) {\r
       //\r
       // Invoke registered notification if exists\r
       //\r
@@ -666,7 +667,7 @@ ExportFormPackages (
                  Private,\r
                  EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,\r
                  (VOID *) FormPackage,\r
-                 EFI_HII_PACKAGE_FORM,\r
+                 EFI_HII_PACKAGE_FORMS,\r
                  Handle\r
                  );\r
       ASSERT_EFI_ERROR (Status);\r
@@ -729,7 +730,7 @@ RemoveFormPackages (
                Private,\r
                EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,\r
                (VOID *) Package,\r
-               EFI_HII_PACKAGE_FORM,\r
+               EFI_HII_PACKAGE_FORMS,\r
                Handle\r
                );\r
     if (EFI_ERROR (Status)) {\r
@@ -738,8 +739,8 @@ RemoveFormPackages (
 \r
     RemoveEntryList (&Package->IfrEntry);\r
     PackageList->PackageListHdr.PackageLength -= Package->FormPkgHdr.Length;\r
-    SafeFreePool (Package->IfrData);\r
-    SafeFreePool (Package);\r
+    FreePool (Package->IfrData);\r
+    FreePool (Package);\r
 \r
   }\r
 \r
@@ -808,12 +809,12 @@ InsertStringPackage (
   AsciiStrCpy (Language, (CHAR8 *) PackageHdr + HeaderSize - LanguageSize);\r
   for (Link = PackageList->StringPkgHdr.ForwardLink; Link != &PackageList->StringPkgHdr; Link = Link->ForwardLink) {\r
     StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-    if (R8_EfiLibCompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {\r
-      SafeFreePool (Language);\r
+    if (HiiCompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {\r
+      FreePool (Language);\r
       return EFI_UNSUPPORTED;\r
     }\r
   }\r
-  SafeFreePool (Language);\r
+  FreePool (Language);\r
 \r
   //\r
   // Create a String package node\r
@@ -876,9 +877,15 @@ InsertStringPackage (
 \r
 Error:\r
 \r
-  SafeFreePool (StringPackage->StringBlock);\r
-  SafeFreePool (StringPackage->StringPkgHdr);\r
-  SafeFreePool (StringPackage);\r
+  if (StringPackage != NULL) {\r
+    if (StringPackage->StringBlock != NULL) {\r
+      FreePool (StringPackage->StringBlock);\r
+    }\r
+    if (StringPackage->StringPkgHdr != NULL) {\r
+      FreePool (StringPackage->StringPkgHdr);\r
+    }\r
+    FreePool (StringPackage);\r
+  }\r
   return Status;\r
 \r
 }\r
@@ -1014,8 +1021,8 @@ RemoveStringPackages (
 \r
     RemoveEntryList (&Package->StringEntry);\r
     PackageList->PackageListHdr.PackageLength -= Package->StringPkgHdr->Header.Length;\r
-    SafeFreePool (Package->StringBlock);\r
-    SafeFreePool (Package->StringPkgHdr);\r
+    FreePool (Package->StringBlock);\r
+    FreePool (Package->StringPkgHdr);\r
     //\r
     // Delete font information\r
     //\r
@@ -1027,10 +1034,10 @@ RemoveStringPackages (
                    HII_FONT_INFO_SIGNATURE\r
                    );\r
       RemoveEntryList (&FontInfo->Entry);\r
-      SafeFreePool (FontInfo);\r
+      FreePool (FontInfo);\r
     }\r
 \r
-    SafeFreePool (Package);\r
+    FreePool (Package);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -1169,11 +1176,21 @@ InsertFontPackage (
 \r
 Error:\r
 \r
-  SafeFreePool (FontPkgHdr);\r
-  SafeFreePool (FontInfo);\r
-  SafeFreePool (FontPackage->GlyphBlock);\r
-  SafeFreePool (FontPackage);\r
-  SafeFreePool (GlobalFont);\r
+  if (FontPkgHdr != NULL) {\r
+    FreePool (FontPkgHdr);\r
+  }\r
+  if (FontInfo != NULL) {\r
+    FreePool (FontInfo);\r
+  }\r
+  if (FontPackage != NULL) {\r
+    if (FontPackage->GlyphBlock != NULL) {\r
+      FreePool (FontPackage->GlyphBlock);\r
+    }\r
+    FreePool (FontPackage);\r
+  }\r
+  if (GlobalFont != NULL) {\r
+    FreePool (GlobalFont);\r
+  }\r
 \r
   return Status;\r
 \r
@@ -1313,8 +1330,11 @@ RemoveFontPackages (
 \r
     RemoveEntryList (&Package->FontEntry);\r
     PackageList->PackageListHdr.PackageLength -= Package->FontPkgHdr->Header.Length;\r
-    SafeFreePool (Package->GlyphBlock);\r
-    SafeFreePool (Package->FontPkgHdr);\r
+\r
+    if (Package->GlyphBlock != NULL) {\r
+      FreePool (Package->GlyphBlock);\r
+    }\r
+    FreePool (Package->FontPkgHdr);\r
     //\r
     // Delete default character cell information\r
     //\r
@@ -1326,7 +1346,7 @@ RemoveFontPackages (
                     HII_GLYPH_INFO_SIGNATURE\r
                     );\r
       RemoveEntryList (&GlyphInfo->Entry);\r
-      SafeFreePool (GlyphInfo);\r
+      FreePool (GlyphInfo);\r
     }\r
 \r
     //\r
@@ -1336,13 +1356,13 @@ RemoveFontPackages (
       GlobalFont = CR (Link, HII_GLOBAL_FONT_INFO, Entry, HII_GLOBAL_FONT_INFO_SIGNATURE);\r
       if (GlobalFont->FontPackage == Package) {\r
         RemoveEntryList (&GlobalFont->Entry);\r
-        SafeFreePool (GlobalFont->FontInfo);\r
-        SafeFreePool (GlobalFont);\r
+        FreePool (GlobalFont->FontInfo);\r
+        FreePool (GlobalFont);\r
         break;\r
       }\r
     }\r
 \r
-    SafeFreePool (Package);\r
+    FreePool (Package);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -1430,7 +1450,7 @@ InsertImagePackage (
 \r
     ImagePackage->PaletteBlock = (UINT8 *) AllocateZeroPool (PaletteSize);\r
     if (ImagePackage->PaletteBlock == NULL) {\r
-      SafeFreePool (ImagePackage);\r
+      FreePool (ImagePackage);\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
     CopyMem (\r
@@ -1450,8 +1470,8 @@ InsertImagePackage (
                 sizeof (EFI_HII_IMAGE_PACKAGE_HDR) - PaletteSize;\r
     ImagePackage->ImageBlock = (UINT8 *) AllocateZeroPool (ImageSize);\r
     if (ImagePackage->ImageBlock == NULL) {\r
-      SafeFreePool (ImagePackage->PaletteBlock);\r
-      SafeFreePool (ImagePackage);\r
+      FreePool (ImagePackage->PaletteBlock);\r
+      FreePool (ImagePackage);\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
     CopyMem (\r
@@ -1611,9 +1631,11 @@ RemoveImagePackages (
 \r
   PackageList->PackageListHdr.PackageLength -= Package->ImagePkgHdr.Header.Length;\r
 \r
-  SafeFreePool (Package->ImageBlock);\r
-  SafeFreePool (Package->PaletteBlock);\r
-  SafeFreePool (Package);\r
+  FreePool (Package->ImageBlock);\r
+  if (Package->PaletteBlock != NULL) {\r
+    FreePool (Package->PaletteBlock);\r
+  }\r
+  FreePool (Package);\r
 \r
   PackageList->ImagePkg = NULL;\r
 \r
@@ -1691,8 +1713,12 @@ InsertSimpleFontPackage (
 \r
 Error:\r
 \r
-  SafeFreePool (SimpleFontPackage->SimpleFontPkgHdr);\r
-  SafeFreePool (SimpleFontPackage);\r
+  if (SimpleFontPackage != NULL) {\r
+    if (SimpleFontPackage->SimpleFontPkgHdr != NULL) {\r
+      FreePool (SimpleFontPackage->SimpleFontPkgHdr);\r
+    }\r
+    FreePool (SimpleFontPackage);\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -1817,8 +1843,8 @@ RemoveSimpleFontPackages (
 \r
     RemoveEntryList (&Package->SimpleFontEntry);\r
     PackageList->PackageListHdr.PackageLength -= Package->SimpleFontPkgHdr->Header.Length;\r
-    SafeFreePool (Package->SimpleFontPkgHdr);\r
-    SafeFreePool (Package);\r
+    FreePool (Package->SimpleFontPkgHdr);\r
+    FreePool (Package);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -2003,7 +2029,7 @@ RemoveDevicePathPackage (
   CopyMem (&Header, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
   PackageList->PackageListHdr.PackageLength -= Header.Length;\r
 \r
-  SafeFreePool (Package);\r
+  FreePool (Package);\r
 \r
   PackageList->DevicePathPkg = NULL;\r
 \r
@@ -2132,8 +2158,13 @@ InsertKeyboardLayoutPackage (
 \r
 Error:\r
 \r
-  SafeFreePool (KeyboardLayoutPackage->KeyboardPkg);\r
-  SafeFreePool (KeyboardLayoutPackage);\r
+\r
+  if (KeyboardLayoutPackage != NULL) {\r
+    if (KeyboardLayoutPackage->KeyboardPkg != NULL) {\r
+      FreePool (KeyboardLayoutPackage->KeyboardPkg);\r
+    }\r
+    FreePool (KeyboardLayoutPackage);\r
+  }\r
 \r
   return Status;\r
 }\r
@@ -2265,8 +2296,8 @@ RemoveKeyboardLayoutPackages (
     RemoveEntryList (&Package->KeyboardEntry);\r
     CopyMem (&PackageHeader, Package->KeyboardPkg, sizeof (EFI_HII_PACKAGE_HEADER));\r
     PackageList->PackageListHdr.PackageLength -= PackageHeader.Length;\r
-    SafeFreePool (Package->KeyboardPkg);\r
-    SafeFreePool (Package);\r
+    FreePool (Package->KeyboardPkg);\r
+    FreePool (Package);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -2356,7 +2387,7 @@ AddPackages (
                  DatabaseRecord->Handle\r
                  );\r
       break;\r
-    case EFI_HII_PACKAGE_FORM:\r
+    case EFI_HII_PACKAGE_FORMS:\r
       Status = InsertFormPackage (\r
                  PackageHdrPtr,\r
                  NotifyType,\r
@@ -2525,7 +2556,7 @@ ExportPackageList (
   UINTN                               ResultSize;\r
   EFI_HII_PACKAGE_HEADER              EndofPackageList;\r
 \r
-  ASSERT (Private != NULL || PackageList != NULL || UsedSize != NULL);\r
+  ASSERT (Private != NULL && PackageList != NULL && UsedSize != NULL);\r
   ASSERT (Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);\r
   ASSERT (IsHiiHandleValid (Handle));\r
 \r
@@ -2850,9 +2881,9 @@ HiiRemovePackageList (
       ASSERT (Private->HiiHandleCount >= 0);\r
 \r
       HiiHandle->Signature = 0;\r
-      SafeFreePool (HiiHandle);\r
-      SafeFreePool (Node->PackageList);\r
-      SafeFreePool (Node);\r
+      FreePool (HiiHandle);\r
+      FreePool (Node->PackageList);\r
+      FreePool (Node);\r
 \r
       return EFI_SUCCESS;\r
     }\r
@@ -2927,7 +2958,7 @@ HiiUpdatePackageList (
         case EFI_HII_PACKAGE_TYPE_GUID:\r
           Status = RemoveGuidPackages (Private, Handle, OldPackageList);\r
           break;\r
-        case EFI_HII_PACKAGE_FORM:\r
+        case EFI_HII_PACKAGE_FORMS:\r
           Status = RemoveFormPackages (Private, Handle, OldPackageList);\r
           break;\r
         case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:\r
@@ -3057,7 +3088,7 @@ HiiListPackageLists (
           }\r
         }\r
         break;\r
-      case EFI_HII_PACKAGE_FORM:\r
+      case EFI_HII_PACKAGE_FORMS:\r
         if (!IsListEmpty (&PackageList->FormPkgHdr)) {\r
           Matched = TRUE;\r
         }\r
@@ -3198,8 +3229,7 @@ HiiExportPackageLists (
                  (EFI_HII_PACKAGE_LIST_HEADER *)((UINT8 *) Buffer + UsedSize)\r
                  );\r
       ASSERT_EFI_ERROR (Status);\r
-    }\r
-    else if (Handle != NULL && Node->Handle == Handle) {\r
+    } else if (Handle != NULL && Node->Handle == Handle) {\r
       Status = ExportPackageList (\r
                  Private,\r
                  Handle,\r
@@ -3387,8 +3417,7 @@ HiiUnregisterPackageNotify (
                       NULL\r
                       );\r
       ASSERT_EFI_ERROR (Status);\r
-      SafeFreePool (Notify);\r
-      Notify = NULL;\r
+      FreePool (Notify);\r
 \r
       return EFI_SUCCESS;\r
     }\r
@@ -3670,7 +3699,9 @@ HiiSetKeyboardLayout (
   // Backup current keyboard layout.\r
   //\r
   CopyMem (&Private->CurrentLayoutGuid, KeyGuid, sizeof (EFI_GUID));\r
-  SafeFreePool(Private->CurrentLayout);\r
+  if (Private->CurrentLayout != NULL) {\r
+    FreePool(Private->CurrentLayout);\r
+  }\r
   Private->CurrentLayout = KeyboardLayout;\r
 \r
   //\r