]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePrintLib/PrintLibInternal.c
Add Missing invocations to VA_END() for VA_START().
[mirror_edk2.git] / MdePkg / Library / BasePrintLib / PrintLibInternal.c
index dbab58d49cacd9b7f52e03f5a87c5832253689fb..8a0cfa6e20e4737f65e9a4e52af3ebbec70cee74 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Print Library internal worker functions.\r
 \r
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -334,7 +334,7 @@ BasePrintLibSPrintMarker (
   UINT32            GuidData1;\r
   UINT16            GuidData2;\r
   UINT16            GuidData3;\r
-  UINT32            LengthToReturn;\r
+  UINT            LengthToReturn;\r
 \r
   //\r
   // If you change this code be sure to match the 2 versions of this function.\r
@@ -342,7 +342,7 @@ BasePrintLibSPrintMarker (
   // DxePrintLibPrint2Protocol (both PrintLib instances).\r
   //\r
 \r
-  if (Flags & COUNT_ONLY_NO_PRINT) {\r
+  if ((Flags & COUNT_ONLY_NO_PRINT) != 0) {\r
     if (BufferSize == 0) {\r
       Buffer = NULL;\r
     }\r
@@ -356,7 +356,7 @@ BasePrintLibSPrintMarker (
     ASSERT (Buffer != NULL);\r
   }\r
 \r
-  if (Flags & OUTPUT_UNICODE) {\r
+  if ((Flags & OUTPUT_UNICODE) != 0) {\r
     BytesPerOutputCharacter = 2;\r
   } else {\r
     BytesPerOutputCharacter = 1;\r
@@ -842,36 +842,31 @@ BasePrintLibSPrintMarker (
     // Pad before the string\r
     //\r
     if ((Flags & (PAD_TO_WIDTH | LEFT_JUSTIFY)) == (PAD_TO_WIDTH)) {\r
-      if (Flags & COUNT_ONLY_NO_PRINT) {\r
-        LengthToReturn += ((Width - Precision) * BytesPerOutputCharacter);\r
-      } else {\r
+      LengthToReturn += ((Width - Precision) * BytesPerOutputCharacter);\r
+      if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
         Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Width - Precision, ' ', BytesPerOutputCharacter);\r
       }\r
     }\r
 \r
     if (ZeroPad) {\r
       if (Prefix != 0) {\r
-        if (Flags & COUNT_ONLY_NO_PRINT) {\r
-          LengthToReturn += (1 * BytesPerOutputCharacter);\r
-        } else {\r
+        LengthToReturn += (1 * BytesPerOutputCharacter);\r
+        if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
           Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, Prefix, BytesPerOutputCharacter);\r
         }\r
       }\r
-      if (Flags & COUNT_ONLY_NO_PRINT) {\r
-        LengthToReturn += ((Precision - Count) * BytesPerOutputCharacter);\r
-      } else {\r
+      LengthToReturn += ((Precision - Count) * BytesPerOutputCharacter);\r
+      if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
         Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Precision - Count, '0', BytesPerOutputCharacter);\r
       }\r
     } else {\r
-      if (Flags & COUNT_ONLY_NO_PRINT) {\r
-        LengthToReturn += ((Precision - Count) * BytesPerOutputCharacter);\r
-      } else {\r
+      LengthToReturn += ((Precision - Count) * BytesPerOutputCharacter);\r
+      if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
         Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Precision - Count, ' ', BytesPerOutputCharacter);\r
       }\r
       if (Prefix != 0) {\r
-        if (Flags & COUNT_ONLY_NO_PRINT) {\r
-          LengthToReturn += (1 * BytesPerOutputCharacter);\r
-        } else {\r
+        LengthToReturn += (1 * BytesPerOutputCharacter);\r
+        if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
           Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, Prefix, BytesPerOutputCharacter);\r
         }\r
       }\r
@@ -891,9 +886,8 @@ BasePrintLibSPrintMarker (
     while (Index < Count) {\r
       ArgumentCharacter = ((*ArgumentString & 0xff) | (*(ArgumentString + 1) << 8)) & ArgumentMask;\r
 \r
-      if (Flags & COUNT_ONLY_NO_PRINT) {\r
-        LengthToReturn += (1 * BytesPerOutputCharacter);\r
-      } else {\r
+      LengthToReturn += (1 * BytesPerOutputCharacter);\r
+      if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
         Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, ArgumentCharacter, BytesPerOutputCharacter);\r
       }\r
       ArgumentString    += BytesPerArgumentCharacter;\r
@@ -904,9 +898,8 @@ BasePrintLibSPrintMarker (
           Digits = 0;\r
           Index++;\r
           if (Index < Count) {\r
-            if (Flags & COUNT_ONLY_NO_PRINT) {\r
-              LengthToReturn += (1 * BytesPerOutputCharacter);\r
-            } else {\r
+            LengthToReturn += (1 * BytesPerOutputCharacter);\r
+            if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
               Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, 1, ',', BytesPerOutputCharacter);\r
             }\r
           }\r
@@ -918,9 +911,8 @@ BasePrintLibSPrintMarker (
     // Pad after the string\r
     //\r
     if ((Flags & (PAD_TO_WIDTH | LEFT_JUSTIFY)) == (PAD_TO_WIDTH | LEFT_JUSTIFY)) {\r
-      if (Flags & COUNT_ONLY_NO_PRINT) {\r
-        LengthToReturn += ((Width - Precision) * BytesPerOutputCharacter);\r
-      } else {\r
+      LengthToReturn += ((Width - Precision) * BytesPerOutputCharacter);\r
+      if ((Flags & COUNT_ONLY_NO_PRINT) == 0 && Buffer != NULL) {\r
         Buffer = BasePrintLibFillBuffer (Buffer, EndBuffer, Width - Precision, ' ', BytesPerOutputCharacter);\r
       }\r
     }\r
@@ -936,10 +928,11 @@ BasePrintLibSPrintMarker (
     FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask;\r
   }\r
 \r
-  if (Flags & COUNT_ONLY_NO_PRINT) {\r
+  if ((Flags & COUNT_ONLY_NO_PRINT) != 0) {\r
     return (LengthToReturn / BytesPerOutputCharacter);\r
   }\r
 \r
+  ASSERT (Buffer != NULL);\r
   //\r
   // Null terminate the Unicode or ASCII string\r
   //\r
@@ -989,7 +982,10 @@ BasePrintLibSPrint (
   )\r
 {\r
   VA_LIST  Marker;\r
+  UINTN    NumberOfPrinted;\r
 \r
   VA_START (Marker, FormatString);\r
-  return BasePrintLibSPrintMarker (StartOfBuffer, BufferSize, Flags, FormatString, Marker, NULL);\r
+  NumberOfPrinted = BasePrintLibSPrintMarker (StartOfBuffer, BufferSize, Flags, FormatString, Marker, NULL);\r
+  VA_END (Marker);\r
+  return NumberOfPrinted;\r
 }\r