From: Timo Sirainen Date: Sun, 19 Jul 2015 07:57:26 +0000 (+0300) Subject: lib-storage: Fixed doing multiple changes via mailbox_attribute_set/unset() X-Git-Tag: 2.2.19.rc1~281 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4a9bbf81af2eba25653bbc4f744cc35e7bc9bb34;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Fixed doing multiple changes via mailbox_attribute_set/unset() Only the last change was committed and the earlier changes were just leaking memory. --- diff --git a/src/lib-storage/index/index-attribute.c b/src/lib-storage/index/index-attribute.c index 321b6fbcd2..2465fbd3f5 100644 --- a/src/lib-storage/index/index-attribute.c +++ b/src/lib-storage/index/index-attribute.c @@ -170,6 +170,12 @@ index_storage_attribute_get_dict_trans(struct mailbox_transaction_context *t, } i_assert(dtransp != NULL); + if (*dtransp != NULL) { + /* transaction already created */ + *dtrans_r = *dtransp; + return 0; + } + if (index_storage_get_dict(t->box, type, &dict, mailbox_prefix_r) < 0) return -1; *dtransp = *dtrans_r = dict_transaction_begin(dict);