From 8ea7f033d9b9bb44517b3b637976b1b31294fb16 Mon Sep 17 00:00:00 2001 From: maartenbrock Date: Sun, 15 May 2005 19:18:08 +0000 Subject: [PATCH] * device/lib/printf_large.c: fixed bug 1193299 * support/regression/tests/bug1057979.c: added test %3.3s git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3762 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 5 +++++ device/lib/printf_large.c | 6 +++++- support/regression/tests/bug1057979.c | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 630baf5b..ff698de0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-05-15 Maarten Brock + + * device/lib/printf_large.c: fixed bug 1193299 + * support/regression/tests/bug1057979.c: added test %3.3s + 2005-05-15 Frieder Ferlemann * device/include/mcs51/8051.h, diff --git a/device/lib/printf_large.c b/device/lib/printf_large.c index 1dfb9bd6..e087f64d 100644 --- a/device/lib/printf_large.c +++ b/device/lib/printf_large.c @@ -464,6 +464,10 @@ get_conversion_spec: #else length = strlen(PTR); #endif + if ( decimals == -1 ) + { + decimals = length; + } if ( ( !left_justify ) && (length < width) ) { width -= length; @@ -474,7 +478,7 @@ get_conversion_spec: } } - while ( *PTR ) + while ( *PTR && (decimals-- > 0)) { output_char( *PTR++, p ); charsOutputted++; diff --git a/support/regression/tests/bug1057979.c b/support/regression/tests/bug1057979.c index 70d1e2c1..2493f277 100644 --- a/support/regression/tests/bug1057979.c +++ b/support/regression/tests/bug1057979.c @@ -27,5 +27,16 @@ test_sprintf(void) sprintf( s, "%04X", 0x8765u ); ASSERT( 0 == strcmp( s, "8765" ) ); + //and from bug 1193299 + sprintf( s, "%3.3s", "abcd" ); + LOG((s)); + ASSERT( 0 == strcmp( s, "abc" ) ); + sprintf( s, "%-3.3s", "abcd" ); + ASSERT( 0 == strcmp( s, "abc" ) ); + sprintf( s, "%3.3s", "ab" ); + ASSERT( 0 == strcmp( s, " ab" ) ); + sprintf( s, "%-3.3s", "ab" ); + ASSERT( 0 == strcmp( s, "ab " ) ); + ASSERT( s[12]==0x12 ); } -- 2.47.2