]> git.sur5r.net Git - cc65/commitdiff
Fixed another bug
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 16 Dec 2004 20:26:46 +0000 (20:26 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 16 Dec 2004 20:26:46 +0000 (20:26 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3329 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/xsprintf.c

index 8ab92eccf457e7a5544d003484c5bec9316bc74b..0242542f7e2ccb677249b82a99265ef782f309f2 100644 (file)
@@ -211,6 +211,15 @@ static void FormatInt (PrintfCtrl* P, unsigned long Val)
     /* Convert the value into a (reversed string). */
     ToStr (P, Val);
 
+    /* The default precision for all integer conversions is one. This means
+     * that the fPrec flag is always set and does not need to be checked 
+     * later on.
+     */
+    if ((P->Flags & fPrec) == 0) {
+        P->Flags |= fPrec;
+        P->Prec = 1;
+    }
+
     /* Determine the leaders for alternative forms */
     if ((P->Flags & fHash) != 0) {
         if (P->Base == 16) {
@@ -219,14 +228,14 @@ static void FormatInt (PrintfCtrl* P, unsigned long Val)
             Lead[LeadCount++] = (P->Flags & fUpcase)? 'X' : 'x';
         } else if (P->Base == 8) {
             /* Alternative form for 'o': always add a leading zero. */
-            if ((P->Flags & fPrec) == 0 || P->Prec <= P->ArgLen) {
+            if (P->Prec <= P->ArgLen) {
                 Lead[LeadCount++] = '0';
             }
         }
     }
 
     /* Determine the amount of precision padding needed */
-    if ((P->Flags & fPrec) != 0 && P->ArgLen < P->Prec) {
+    if (P->ArgLen < P->Prec) {
         PrecPadding = P->Prec - P->ArgLen;
     } else {
         PrecPadding = 0;