diff --git a/imap/ctl_conversationsdb.c b/imap/ctl_conversationsdb.c index df4631130d..e2792ecc17 100644 --- a/imap/ctl_conversationsdb.c +++ b/imap/ctl_conversationsdb.c @@ -279,13 +279,11 @@ static int zero_modseq_cb(const mbentry_t *mbentry, static int do_zeromodseq(const char *userid) { imaply_strict = 0; - char *inboxname = mboxname_user_mbox(userid, NULL); struct conversations_state *state = NULL; struct quota q; struct txn *txn = NULL; - int r = 0; - r = conversations_open_user(userid, 0/*shared*/, &state); + int r = conversations_open_user(userid, 0/*shared*/, &state); if (r) return r; r = mboxlist_usermboxtree(userid, NULL, zero_modseq_cb, NULL, 0); @@ -294,6 +292,7 @@ static int do_zeromodseq(const char *userid) r = conversations_zero_modseq(state); if (r) goto done; + char *inboxname = mboxname_user_mbox(userid, NULL); quota_init(&q, inboxname); r = quota_read(&q, &txn, 1); if (!r) { @@ -301,14 +300,15 @@ static int do_zeromodseq(const char *userid) r = quota_write(&q, /*silent*/1, &txn); } quota_free(&q); - if (r) goto done; - quota_commit(&txn); + if (!r) { + quota_commit(&txn); - mboxname_zero_counters(inboxname); + mboxname_zero_counters(inboxname); + } + free(inboxname); done: conversations_commit(&state); - free(inboxname); return r; }