aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Paland <marco@paland.com>2018-06-24 13:07:52 +0200
committerMarco Paland <marco@paland.com>2018-06-24 13:07:52 +0200
commit810cb2b29053d84c38a4b8b7e40431137902d002 (patch)
treef4d51fe68b8a2850e75b3e5890ec37e47a642dd7
parent175e466d92d90487ad12149eb4068cb183c28051 (diff)
downloadprintf-810cb2b29053d84c38a4b8b7e40431137902d002.tar.gz
printf-810cb2b29053d84c38a4b8b7e40431137902d002.tar.bz2
printf-810cb2b29053d84c38a4b8b7e40431137902d002.zip
fix(printf): suppress terminating \0 in printf() output
Closes #19
-rw-r--r--printf.c4
-rw-r--r--test/test_suite.cpp3
2 files changed, 5 insertions, 2 deletions
diff --git a/printf.c b/printf.c
index 0893216..5203932 100644
--- a/printf.c
+++ b/printf.c
@@ -104,7 +104,9 @@ static inline void _out_null(char character, char* buffer, size_t idx, size_t ma
static inline void _out_char(char character, char* buffer, size_t idx, size_t maxlen)
{
(void)buffer; (void)idx; (void)maxlen;
- _putchar(character);
+ if (character) {
+ _putchar(character);
+ }
}
diff --git a/test/test_suite.cpp b/test/test_suite.cpp
index 1251212..53482ab 100644
--- a/test/test_suite.cpp
+++ b/test/test_suite.cpp
@@ -55,11 +55,12 @@ void _out_fct(char character, void* arg)
}
-
TEST_CASE("printf", "[]" ) {
printf_idx = 0U;
memset(printf_buffer, 0xCC, 100U);
REQUIRE(test::printf("% d", 4232) == 5);
+ REQUIRE(printf_buffer[5] == (char)0xCC);
+ printf_buffer[5] = 0;
REQUIRE(!strcmp(printf_buffer, " 4232"));
}