X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2F_PDCLIB%2Fprint.c;h=424228b29e837397cbb092aff6dd2a52d6334c33;hb=0f88da0454edf3c1ca1a7f786c2fd9afdef0eb9c;hp=8d19fe57e856ad3c6c564f81b758de4157febba2;hpb=e72505f84aa8d8730e46d955a2722af361112e4f;p=pdclib diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index 8d19fe5..424228b 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -42,15 +42,15 @@ i - pointer to number of characters already delivered in this call n - pointer to maximum number of characters to be delivered in this call s - the buffer into which the character shall be delivered - TODO: ref. fputs() for a better way to buffer handling */ #define DELIVER( x ) \ do { \ + int character = x; \ if ( status->i < status->n ) { \ if ( status->stream != NULL ) \ - putc( x, status->stream ); \ + putc( character, status->stream ); \ else \ - status->s[status->i] = x; \ + status->s[status->i] = character; \ } \ ++(status->i); \ } while ( 0 ) @@ -498,7 +498,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status ++(status->current); } } - if ( status->i >= status->n ) + if ( status->i >= status->n && status->n > 0 ) { status->s[status->n - 1] = '\0'; } @@ -507,6 +507,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status } #ifdef TEST +#define _PDCLIB_FILEID "_PDCLIB/print.c" #include <_PDCLIB_test.h> #include @@ -538,9 +539,6 @@ static int testprintf( char * buffer, const char * format, ... ) #define TEST_CONVERSION_ONLY -#define TESTCASE_SPRINTF( x ) if ( strcmp( target, x ) == 0 ) {} \ - else { TEST_RESULTS += 1; printf( "FAILED: " __FILE__ ", line %d - \"%s\" != %s\n", __LINE__, target, #x ); } - int main( void ) { char target[100];