]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Use exactly match method for HiiCompareLanguage.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 17 Mar 2011 07:31:35 +0000 (07:31 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 17 Mar 2011 07:31:35 +0000 (07:31 +0000)
Compare all of Language2 against the characters in Language1 up to the first ‘;’ or Null terminator.

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

MdeModulePkg/Universal/HiiDatabaseDxe/String.c

index eeac9c20879cef1e4530a38b6f6526cb3145fb6c..194e44e6d06dd0a8566da6f1fed1af46ea310f2a 100644 (file)
@@ -1967,11 +1967,25 @@ HiiCompareLanguage (
   IN  CHAR8  *Language2\r
   )\r
 {\r
-  UINTN Language2Len;\r
+  UINTN  Index;\r
+\r
+  //\r
+  // Compare the Primary Language in Language1 to Language2\r
+  //\r
+  for (Index = 0; Language1[Index] != 0 && Language1[Index] != ';'; Index++) {\r
+    if (Language1[Index] != Language2[Index]) {\r
+      //\r
+      // Return FALSE if any characters are different.\r
+      //\r
+      return FALSE;\r
+    }\r
+  }\r
 \r
   //\r
-  // When languages are exactly same, they will be identical. \r
+  // Only return TRUE if Language2[Index] is a Null-terminator which means\r
+  // the Primary Language in Language1 is the same length as Language2.  If\r
+  // Language2[Index] is not a Null-terminator, then Language2 is longer than\r
+  // the Primary Language in Language1, and FALSE must be returned.\r
   //\r
-  Language2Len = AsciiStrLen (Language2);\r
-  return  (BOOLEAN) (AsciiStrnCmp (Language1, Language2, Language2Len) == 0);\r
+  return (Language2[Index] == 0);\r
 }\r