From 824a9b35f953ab263d08dd7659aaba4efa162b4f Mon Sep 17 00:00:00 2001 From: Marco Paland Date: Tue, 8 May 2018 13:01:10 +0200 Subject: fix(printf): use null output function for nullptr buffer Improving #11 --- printf.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'printf.c') diff --git a/printf.c b/printf.c index d373781..edc0a4e 100644 --- a/printf.c +++ b/printf.c @@ -70,12 +70,19 @@ typedef void (*out_fct_type)(char character, char* buffer, size_t idx, size_t ma // internal buffer output static inline void _out_buffer(char character, char* buffer, size_t idx, size_t maxlen) { - if (!!buffer && (idx < maxlen)) { + if (idx < maxlen) { buffer[idx] = character; } } +// internal null output +static inline void _out_null(char character, char* buffer, size_t idx, size_t maxlen) +{ + (void)character; (void)buffer; (void)idx; (void)maxlen; +} + + // internal _putchar wrapper static inline void _out_char(char character, char* buffer, size_t idx, size_t maxlen) { @@ -363,6 +370,11 @@ static int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const unsigned int flags, width, precision, n; size_t idx = 0U; + if (!buffer) { + // use null output function + out = _out_null; + } + while (*format) { // format specifier? %[flags][width][.precision][length] -- cgit v1.2.3