On 10.8.2010, at 10.30, Len7hir wrote: > I did Dovecot profiling on huge e-mail system, and p_strdup was very high on > list. > > I do minor change: > p_strdup: > /* > for (len = 0; (str)[len] != '\0'; ) > len++; > len++; > */ > len = strlen(str) + 1;
Committed: http://hg.dovecot.org/dovecot-2.0/rev/7f550a7bd9d7 > p_strndup: > /* > len = 0; > while (len < max_chars && ((const char *) str)[len] != '\0') > len++; > */ > len = strnlen(str, max_chars); strnlen() exists only in Linux and FreeBSD, so if this change is made it has to be behind #ifdef HAVE_STRNLEN. But if it was only p_strdup() that was on the profile listing, it's a bit too much trouble to add support for it. > I wonder why You use loops instead strlen, which is optimalised on every > platforms. No reason. I guess the excuse is that it was written 8-9 years ago.