]> pd.if.org Git - pdclib.old/blobdiff - functions/_PDCLIB/print.c
C11 7.21.6.1p8 "The result of converting a zero value with a precision of zero is...
[pdclib.old] / functions / _PDCLIB / print.c
index 974c3daa03a23dfc57cb61eba08d6ff45a6f5c6c..d3968f57e977b845d274e313785ec6099aa9e41c 100644 (file)
@@ -104,7 +104,7 @@ static void int2base( uintmax_t value, struct _PDCLIB_status_t * status )
         const char * digits = (status->flags & E_lower) ? 
                                 _PDCLIB_digits : _PDCLIB_Xdigits;
         uintmax_t remaining = value;
-        do {
+        if(status->prec != 0 || remaining != 0) do {
             uintmax_t digit = remaining % status->base;
             remaining /= status->base;
 
@@ -315,14 +315,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status
         }
         else
         {
-            char * endptr;
-            status->prec = (int)strtol( spec, &endptr, 10 );
-            if ( spec == endptr )
-            {
-                /* Decimal point but no number - bad conversion specifier. */
-                return orig_spec;
-            }
-            spec = endptr;
+            status->prec = (int)strtol( spec, (char**) &spec, 10 );
         }
         /* Having a precision cancels out any zero flag. */
         status->flags &= ~E_zero;