]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePrintLib/PrintLib.c
1.BaseMemoryLibMmx: Add X64 Cpu Arch support.
[mirror_edk2.git] / MdePkg / Library / BasePrintLib / PrintLib.c
index bbafeeaec53d54f42b89b7bc599d1bd6dc8dba86..1484d891b63f284ba6df8e31f620ea5d8822208c 100644 (file)
@@ -227,6 +227,17 @@ BasePrintLibVSPrint (
             Precision = Count;\r
           }\r
           break;\r
+       \r
+        case '\0':\r
+          //\r
+          // Make no output if Format string terminates unexpectedly when\r
+          // looking up for flag, width, precision and type. \r
+          //\r
+          Format   -= BytesPerFormatCharacter;\r
+          Precision = 0;\r
+          //\r
+          // break skiped on purpose.\r
+          //\r
         default:\r
           Done = TRUE;\r
           break;\r
@@ -299,19 +310,26 @@ BasePrintLibVSPrint (
           Count = 0;\r
         }\r
         ArgumentString = (CHAR8 *)ValueBuffer + Count;\r
-        Digits = 3 - (Count % 3);\r
+        \r
+        Digits = Count % 3;\r
+        if (Digits != 0) {\r
+          Digits = 3 - Digits;\r
+        }\r
         if (Comma && Count != 0) {\r
           Count += ((Count - 1) / 3);\r
         }\r
         if (Prefix != 0) {\r
           Count++;\r
+          Precision++;\r
         }\r
         Flags |= ARGUMENT_REVERSED;\r
         ZeroPad = TRUE;\r
         if ((Flags & PREFIX_ZERO) != 0) {\r
-          if ((Flags & PAD_TO_WIDTH) != 0) {\r
-            if ((Flags & PRECISION) == 0) {\r
-              Precision = Width;\r
+          if ((Flags & LEFT_JUSTIFY) == 0) {\r
+            if ((Flags & PAD_TO_WIDTH) != 0) {\r
+              if ((Flags & PRECISION) == 0) {\r
+                Precision = Width;\r
+              }\r
             }\r
           }\r
         }\r