From 9e16596a07fe02ee668e74b1da7912a66d7ab1a3 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Fri, 15 Dec 2000 14:04:42 +0000 Subject: [PATCH] (append_string): handle NULL strings by printing `(null)' git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9392 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/roken/snprintf.c | 47 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/lib/roken/snprintf.c b/lib/roken/snprintf.c index 4a60b4620..a340e9084 100644 --- a/lib/roken/snprintf.c +++ b/lib/roken/snprintf.c @@ -214,28 +214,31 @@ append_string (struct state *state, int prec, int flags) { - if(prec != -1) - width -= prec; - else - width -= strlen((char *)arg); - if(!(flags & minus_flag)) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - if (prec != -1) { - while (*arg && prec--) - if ((*state->append_char) (state, *arg++)) - return 1; - } else { - while (*arg) - if ((*state->append_char) (state, *arg++)) - return 1; - } - if(flags & minus_flag) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - return 0; + if(arg == NULL) + arg = (unsigned char*)"(null)"; + + if(prec != -1) + width -= prec; + else + width -= strlen((char *)arg); + if(!(flags & minus_flag)) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + if (prec != -1) { + while (*arg && prec--) + if ((*state->append_char) (state, *arg++)) + return 1; + } else { + while (*arg) + if ((*state->append_char) (state, *arg++)) + return 1; + } + if(flags & minus_flag) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + return 0; } static int