]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/String.c
Fixed GCC 4.4 build issue. Also fixed issue where upper 32-bits may be lost during...
[mirror_edk2.git] / MdePkg / Library / BaseLib / String.c
index 43ba1447b88d77ef2c2c6070660a323d58a130e7..afbad1d4e3277a5290569f41a0fd2c1c68ce1dd3 100644 (file)
@@ -425,7 +425,11 @@ StrnCat (
   IN      UINTN                     Length\r
   )\r
 {\r
-  StrnCpy (Destination + StrLen (Destination), Source, Length);\r
+  UINTN   DestinationLen;\r
+\r
+  DestinationLen = StrLen (Destination);\r
+  StrnCpy (Destination + DestinationLen, Source, Length);\r
+  Destination[DestinationLen + Length] = L'\0';\r
 \r
   //\r
   // Size of the resulting string should never be zero.\r
@@ -1325,7 +1329,7 @@ AsciiStrCmp (
 **/\r
 CHAR8\r
 EFIAPI\r
-AsciiToUpper (\r
+InternalBaseLibAsciiToUpper (\r
   IN      CHAR8                     Chr\r
   )\r
 {\r
@@ -1355,7 +1359,7 @@ InternalAsciiHexCharToUintn (
     return Char - '0';\r
   }\r
 \r
-  return (UINTN) (10 + AsciiToUpper (Char) - 'A');\r
+  return (UINTN) (10 + InternalBaseLibAsciiToUpper (Char) - 'A');\r
 }\r
 \r
 \r
@@ -1404,13 +1408,13 @@ AsciiStriCmp (
   ASSERT (AsciiStrSize (FirstString));\r
   ASSERT (AsciiStrSize (SecondString));\r
 \r
-  UpperFirstString  = AsciiToUpper (*FirstString);\r
-  UpperSecondString = AsciiToUpper (*SecondString);\r
+  UpperFirstString  = InternalBaseLibAsciiToUpper (*FirstString);\r
+  UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
   while ((*FirstString != '\0') && (UpperFirstString == UpperSecondString)) {\r
     FirstString++;\r
     SecondString++;\r
-    UpperFirstString  = AsciiToUpper (*FirstString);\r
-    UpperSecondString = AsciiToUpper (*SecondString);\r
+    UpperFirstString  = InternalBaseLibAsciiToUpper (*FirstString);\r
+    UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
   }\r
 \r
   return UpperFirstString - UpperSecondString;\r
@@ -1566,7 +1570,11 @@ AsciiStrnCat (
   IN      UINTN                     Length\r
   )\r
 {\r
-  AsciiStrnCpy (Destination + AsciiStrLen (Destination), Source, Length);\r
+  UINTN   DestinationLen;\r
+\r
+  DestinationLen = AsciiStrLen (Destination);\r
+  AsciiStrnCpy (Destination + DestinationLen, Source, Length);\r
+  Destination[DestinationLen + Length] = '\0';\r
 \r
   //\r
   // Size of the resulting string should never be zero.\r
@@ -1858,7 +1866,7 @@ AsciiStrHexToUintn (
     String++;\r
   }\r
 \r
-  if (AsciiToUpper (*String) == 'X') {\r
+  if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
     ASSERT (*(String - 1) == '0');\r
     if (*(String - 1) != '0') {\r
       return 0;\r
@@ -1953,7 +1961,7 @@ AsciiStrHexToUint64 (
     String++;\r
   }\r
 \r
-  if (AsciiToUpper (*String) == 'X') {\r
+  if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
     ASSERT (*(String - 1) == '0');\r
     if (*(String - 1) != '0') {\r
       return 0;\r