}
// 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
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';
status->base = 0;
status->current = 0;
status->width = 0;
- status->prec = 0;
+ status->prec = EOF;
/* First come 0..n flags */
do