]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c
Roll back changes to apply GetBestLanguage() in HiiDataBase. Exact language match...
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiOnUefiHiiThunk / Strings.c
index d0b356be5141d6da6ba0597203752b9669221e7e..d83750bc9b8f16bd70e89e7a19dffee64e50140b 100644 (file)
@@ -307,7 +307,6 @@ HiiThunkGetString (
 \r
   Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This);\r
 \r
-  Iso639AsciiLanguage = NULL;\r
   Rfc4646AsciiLanguage = NULL;\r
 \r
   if (LanguageString != NULL) {\r
@@ -322,6 +321,7 @@ HiiThunkGetString (
     // in Iso639. So map it to the Language Identifier defined in RFC4646.\r
     //\r
     Rfc4646AsciiLanguage = ConvertLanguagesIso639ToRfc4646 (Iso639AsciiLanguage);\r
+    FreePool (Iso639AsciiLanguage);\r
 \r
     //\r
     // If Rfc4646AsciiLanguage is NULL, more language mapping must be added to \r
@@ -337,67 +337,56 @@ HiiThunkGetString (
     goto Done;\r
   }\r
 \r
-  if (Rfc4646AsciiLanguage == NULL) {\r
-    //\r
-    // Get the languages that the package specified by HiiHandle supports\r
-    //\r
-    SupportedLanguages = HiiGetSupportedLanguages (UefiHiiHandle);\r
-    if (SupportedLanguages == NULL) {\r
-      goto Error2;\r
-    }\r
+  //\r
+  // Get the languages that the package specified by HiiHandle supports\r
+  //\r
+  SupportedLanguages = HiiGetSupportedLanguages (UefiHiiHandle);\r
+  if (SupportedLanguages == NULL) {\r
+    goto Error2;\r
+  }\r
 \r
-    //\r
-    // Get the current platform language setting\r
-    //\r
-    PlatformLanguage = GetEfiGlobalVariable (L"PlatformLang");\r
-    if (PlatformLanguage == NULL) {\r
-      goto Error1;\r
-    }\r
+  //\r
+  // Get the current platform language setting\r
+  //\r
+  PlatformLanguage = GetEfiGlobalVariable (L"PlatformLang");\r
+  if (PlatformLanguage == NULL) {\r
+    goto Error1;\r
+  }\r
 \r
-    //\r
-    // Get the best matching language from SupportedLanguages\r
-    //\r
-    BestLanguage = GetBestLanguage (\r
-                     SupportedLanguages, \r
-                     FALSE,                // RFC 4646 mode\r
-                     PlatformLanguage,     // Next highest priority\r
-                     SupportedLanguages,   // Lowest priority \r
-                     NULL\r
-                     );\r
-    if (BestLanguage == NULL) {\r
-      FreePool (PlatformLanguage);\r
+  //\r
+  // Get the best matching language from SupportedLanguages\r
+  //\r
+  BestLanguage = GetBestLanguage (\r
+                   SupportedLanguages, \r
+                   FALSE,                // RFC 4646 mode\r
+                   (Rfc4646AsciiLanguage != NULL) ? Rfc4646AsciiLanguage : "",\r
+                   PlatformLanguage,     // Next highest priority\r
+                   SupportedLanguages,   // Lowest priority \r
+                   NULL\r
+                   );\r
+  if (BestLanguage == NULL) {\r
+    FreePool (PlatformLanguage);\r
 Error1:\r
-      FreePool (SupportedLanguages);\r
+    FreePool (SupportedLanguages);\r
 Error2:\r
-      Status = EFI_INVALID_PARAMETER;\r
-      goto Done;\r
-    }\r
-\r
-    Status = mHiiStringProtocol->GetString (\r
-                                 mHiiStringProtocol,\r
-                                 BestLanguage,\r
-                                 UefiHiiHandle,\r
-                                 Token,\r
-                                 StringBuffer,\r
-                                 BufferLengthTemp,\r
-                                 NULL\r
-                                 );\r
-    FreePool (BestLanguage);\r
-  } else {\r
-    Status = mHiiStringProtocol->GetString (\r
-                                 mHiiStringProtocol,\r
-                                 Rfc4646AsciiLanguage,\r
-                                 UefiHiiHandle,\r
-                                 Token,\r
-                                 StringBuffer,\r
-                                 BufferLengthTemp,\r
-                                 NULL\r
-                                 );\r
+    Status = EFI_INVALID_PARAMETER;\r
+    goto Done;\r
   }\r
 \r
+  Status = mHiiStringProtocol->GetString (\r
+                               mHiiStringProtocol,\r
+                               BestLanguage,\r
+                               UefiHiiHandle,\r
+                               Token,\r
+                               StringBuffer,\r
+                               BufferLengthTemp,\r
+                               NULL\r
+                               );\r
+  FreePool (BestLanguage);\r
+\r
 Done:\r
-       if (Iso639AsciiLanguage != NULL) {\r
-    FreePool (Iso639AsciiLanguage);\r
+       if (Rfc4646AsciiLanguage != NULL) {\r
+    FreePool (Rfc4646AsciiLanguage);\r
   }\r
   \r
   return Status;\r