X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2F_PDCLIB%2Fprint.c;h=439098d69bc604331de9b5e832178fb431c4c32a;hb=73b9741c872e1a9c23f91e81eaa5d673b55d8653;hp=78716d1412b0422c9887ef6e929a4bf24ee450d7;hpb=82ad725339311dab6bc2c28524e71d0cfaacab25;p=pdclib diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index 78716d1..439098d 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -112,7 +112,7 @@ static void int2base( uintmax_t value, struct _PDCLIB_status_t * status ) } // Pad field out to the precision specification - while( written < status->prec ) outend[-++written] = '0'; + while( (long) written < status->prec ) outend[-++written] = '0'; // If a field width specified, and zero padding was requested, then pad to // the field width @@ -140,6 +140,9 @@ static void int2base( uintmax_t value, struct _PDCLIB_status_t * status ) if ( outend[-written] != '0' ) outend[-++written] = '0'; break; case 16: + // No prefix if zero + if ( value == 0 ) break; + written += padding < 2 ? 2 - padding : 0; outend[-written ] = '0'; outend[-written + 1] = (status->flags & E_lower) ? 'x' : 'X'; @@ -175,7 +178,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status status->base = 0; status->current = 0; status->width = 0; - status->prec = 0; + status->prec = EOF; /* First come 0..n flags */ do