From fe4389584011a4b9581072723f5c91668fac23c1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 18 Apr 2017 15:51:39 +0300 Subject: [PATCH] lib-storage: mail_search_arg_to_imap() - minor FLAGS writing optimization Avoid an extra str_delete() by immediately calculating whether the parenthesis are needed. --- src/lib-storage/mail-search-args-imap.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib-storage/mail-search-args-imap.c b/src/lib-storage/mail-search-args-imap.c index c0d6e41208..f3c82fc09a 100644 --- a/src/lib-storage/mail-search-args-imap.c +++ b/src/lib-storage/mail-search-args-imap.c @@ -57,22 +57,20 @@ mail_search_arg_to_imap_flags(string_t *dest, enum mail_flags flags) static const char *flag_names[] = { "ANSWERED", "FLAGGED", "DELETED", "SEEN", "DRAFT", "RECENT" }; - unsigned int count = 0, start_pos = str_len(dest); - str_append_c(dest, '('); + i_assert(flags != 0); + + if (!bits_is_power_of_two(flags)) + str_append_c(dest, '('); for (unsigned int i = 0; i < N_ELEMENTS(flag_names); i++) { if ((flags & (1 << i)) != 0) { str_append(dest, flag_names[i]); str_append_c(dest, ' '); - count++; } } - i_assert(count > 0); str_truncate(dest, str_len(dest)-1); - if (count == 1) - str_delete(dest, start_pos, 1); - else + if (!bits_is_power_of_two(flags)) str_append_c(dest, ')'); }