From d79c5a289feef16ce8fd04dc8db1efb934e1aa18 Mon Sep 17 00:00:00 2001 From: solar Date: Wed, 11 Jun 2008 20:17:33 +0000 Subject: [PATCH] Warnings regarding signed / unsigned issues. Fixed. --- functions/_PDCLIB/print.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index d47a48d..95e71c6 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -126,7 +126,7 @@ static void int2base( intmax_t value, struct _PDCLIB_status_t * status ) size_t characters = preidx + ( ( status->this > status->prec ) ? status->this : status->prec ); if ( status->width > characters ) { - for ( int i = 0; i < status->width - characters; ++i ) + for ( size_t i = 0; i < status->width - characters; ++i ) { DELIVER( ' ' ); /* @@ -172,7 +172,7 @@ static void int2base( intmax_t value, struct _PDCLIB_status_t * status ) } } /* Do the precision padding if necessary. */ - for ( int i = 0; i < prec_pads; ++i ) + for ( size_t i = 0; i < prec_pads; ++i ) { DELIVER( '0' ); } @@ -255,12 +255,26 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status if ( *spec == '*' ) { /* Retrieve width value from argument stack */ +#if 1 + int width = va_arg( status->arg, int ); + if ( width < 0 ) + { + status->flags |= E_minus; + status->width = width * -1; /* FIXME: Should be abs( width ) */ + } + else + { + status->width = width; + } +#else + /* FIXME: Old version - with unsigned status->width, condition <0 is never true */ if ( ( status->width = va_arg( status->arg, int ) ) < 0 ) { /* Negative value is '-' flag plus absolute value */ status->flags |= E_minus; status->width *= -1; } +#endif ++spec; } else -- 2.40.0