{
char target[100];
#include "printf_testcases.h"
+ TESTCASE( snprintf( NULL, 0, "foo" ) == 3 );
+ TESTCASE( snprintf( NULL, 0, "%d", 100 ) == 3 );
return TEST_RESULTS;
}
if ( ( *format != '%' ) || ( ( rc = _PDCLIB_print( format, &status ) ) == format ) )
{
/* No conversion specifier, print verbatim */
- s[ status.i++ ] = *(format++);
+ if ( status.i < n )
+ {
+ s[ status.i ] = *format;
+ }
+ status.i++;
+ format++;
}
else
{
format = rc;
}
}
- s[ status.i ] = '\0';
+ if ( status.i < n )
+ {
+ s[ status.i ] = '\0';
+ }
va_end( status.arg );
return status.i;
}