]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mail_search_arg_to_imap() - minor keywords writing optimization
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 18 Apr 2017 12:55:08 +0000 (15:55 +0300)
committerGitLab <gitlab@git.dovecot.net>
Thu, 27 Apr 2017 07:00:08 +0000 (10:00 +0300)
Avoid an extra str_delete() by checking whether the parenthesis are needed.

src/lib-storage/mail-search-args-imap.c

index 403389aa382912398946af37ba897fe2b5ef2f16..1205ebee9e6360d952532be6db2d5440ee4548fd 100644 (file)
@@ -110,28 +110,26 @@ bool mail_search_arg_to_imap(string_t *dest, const struct mail_search_arg *arg,
                const struct mail_keywords *kw = arg->initialized.keywords;
                const ARRAY_TYPE(keywords) *names_arr;
                const char *const *namep;
-               unsigned int i, count = 0;
-               size_t start_pos = str_len(dest);
+               unsigned int i;
 
                if (kw == NULL) {
                        /* uninitialized */
                        str_printfa(dest, "KEYWORD %s", arg->value.str);
                        break;
                }
+               i_assert(kw->count > 0);
 
                names_arr = mail_index_get_keywords(kw->index);
 
-               str_append_c(dest, '(');
+               if (kw->count > 1)
+                       str_append_c(dest, '(');
                for (i = 0; i < kw->count; i++) {
                        namep = array_idx(names_arr, kw->idx[i]);
                        if (i > 0)
                                str_append_c(dest, ' ');
                        str_printfa(dest, "KEYWORD %s", *namep);
-                       count++;
                }
-               if (count == 1)
-                       str_delete(dest, start_pos, 1);
-               else
+               if (kw->count > 1)
                        str_append_c(dest, ')');
                break;
        }