From: Timo Sirainen Date: Tue, 13 Apr 2010 16:01:58 +0000 (+0300) Subject: lib-storage: Minor optimization to search build initialization code. X-Git-Tag: 2.0.beta5~129 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=464bb87a4678ef3f37a15d14621e6b4a427b14d2;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Minor optimization to search build initialization code. --HG-- branch : HEAD --- diff --git a/src/lib-storage/mail-search-register.c b/src/lib-storage/mail-search-register.c index 2e86c04765..f62a6fd650 100644 --- a/src/lib-storage/mail-search-register.c +++ b/src/lib-storage/mail-search-register.c @@ -8,6 +8,8 @@ struct mail_search_register { ARRAY_DEFINE(args, struct mail_search_register_arg); mail_search_register_fallback_t *fallback; + + unsigned int args_sorted:1; }; struct mail_search_register *mail_search_register_init(void) @@ -41,7 +43,7 @@ void mail_search_register_add(struct mail_search_register *reg, unsigned int count) { array_append(®->args, arg, count); - array_sort(®->args, mail_search_register_arg_cmp); + reg->args_sorted = FALSE; } void mail_search_register_fallback(struct mail_search_register *reg, @@ -55,6 +57,11 @@ mail_search_register_find(struct mail_search_register *reg, const char *key) { struct mail_search_register_arg arg; + if (!reg->args_sorted) { + array_sort(®->args, mail_search_register_arg_cmp); + reg->args_sorted = TRUE; + } + arg.key = key; return array_bsearch(®->args, &arg, mail_search_register_arg_cmp); } @@ -68,4 +75,3 @@ bool mail_search_register_get_fallback(struct mail_search_register *reg, *fallback_r = reg->fallback; return TRUE; } -