From: Timo Sirainen Date: Sat, 30 Apr 2016 11:05:42 +0000 (+0300) Subject: lib: Optimize str_append_n() X-Git-Tag: 2.3.0.rc1~3848 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=88bcf81213b292e58ddaa41643e4146299cc750f;p=thirdparty%2Fdovecot%2Fcore.git lib: Optimize str_append_n() --- diff --git a/src/lib/str.c b/src/lib/str.c index 6e6066839e..3a5c92dd06 100644 --- a/src/lib/str.c +++ b/src/lib/str.c @@ -83,12 +83,14 @@ bool str_equals(const string_t *str1, const string_t *str2) void str_append_n(string_t *str, const void *cstr, size_t max_len) { + const char *p; size_t len; - len = 0; - while (len < max_len && ((const char *)cstr)[len] != '\0') - len++; - + p = memchr(cstr, '\0', max_len); + if (p == NULL) + len = max_len; + else + len = p - (const char *)cstr; buffer_append(str, cstr, len); }