From: Timo Sirainen Date: Mon, 8 Sep 2003 01:14:17 +0000 (+0300) Subject: minor speedup X-Git-Tag: 1.1.alpha1~4344 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=593b501eea1e4ee2b0a3cbf5ad8f2529c40a507a;p=thirdparty%2Fdovecot%2Fcore.git minor speedup --HG-- branch : HEAD --- diff --git a/src/lib/printf-upper-bound.c b/src/lib/printf-upper-bound.c index a845c914b4..33eb771fb3 100644 --- a/src/lib/printf-upper-bound.c +++ b/src/lib/printf-upper-bound.c @@ -75,11 +75,24 @@ size_t printf_string_upper_bound(const char *format, va_list args) while (*format) { - register char c = *format++; - - if (c != '%') + if (*format++ != '%') len += 1; - else /* (c == '%') */ + else if (*format == 's') + { + /* most commonly used modifier, optimize for it */ + const char *v_string = va_arg (args, const char*); + if (!v_string) + len += 8; /* hold "(null)" */ + else + len += strlen(v_string); + } + else if (*format == 'u') + { + /* second most commonly used modifier */ + (void) va_arg (args, unsigned int); + len += MAX_INT_STRLEN; + } + else { PrintfArgSpec spec; int seen_l = FALSE, conv_done = FALSE; @@ -88,7 +101,7 @@ size_t printf_string_upper_bound(const char *format, va_list args) memset(&spec, 0, sizeof(spec)); do { - c = *format++; + char c = *format++; switch (c) { GDoubleIEEE754 u_double;