]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Minor optimization to search build initialization code.
authorTimo Sirainen <tss@iki.fi>
Tue, 13 Apr 2010 16:01:58 +0000 (19:01 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 13 Apr 2010 16:01:58 +0000 (19:01 +0300)
--HG--
branch : HEAD

src/lib-storage/mail-search-register.c

index 2e86c047659773b8f2a043b040381d8a3206839c..f62a6fd650c88a64bc7dc9ceef812f016b6ceb1b 100644 (file)
@@ -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(&reg->args, arg, count);
-       array_sort(&reg->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(&reg->args, mail_search_register_arg_cmp);
+               reg->args_sorted = TRUE;
+       }
+
        arg.key = key;
        return array_bsearch(&reg->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;
 }
-