dovecot-2.2: maildir: Fixed a crash caused by previous mailbox_u...

dovecot at dovecot.org dovecot at dovecot.org
Sat Dec 15 14:37:32 EET 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/eed88e231043
changeset: 15484:eed88e231043
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Dec 15 14:37:20 2012 +0200
description:
maildir: Fixed a crash caused by previous mailbox_update() change

diffstat:

 src/lib-storage/index/maildir/maildir-storage.c |  5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diffs (29 lines):

diff -r fc6873897e8b -r eed88e231043 src/lib-storage/index/maildir/maildir-storage.c
--- a/src/lib-storage/index/maildir/maildir-storage.c	Sat Dec 15 14:27:56 2012 +0200
+++ b/src/lib-storage/index/maildir/maildir-storage.c	Sat Dec 15 14:37:20 2012 +0200
@@ -420,6 +420,7 @@
 {
 	struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
 	struct maildir_uidlist *uidlist;
+	bool locked = FALSE;
 	int ret = 0;
 
 	if (!box->opened) {
@@ -433,6 +434,7 @@
 		if (maildir_uidlist_lock(uidlist) <= 0)
 			return -1;
 
+		locked = TRUE;
 		if (!guid_128_is_empty(update->mailbox_guid))
 			maildir_uidlist_set_mailbox_guid(uidlist, update->mailbox_guid);
 		if (update->uid_validity != 0)
@@ -445,7 +447,8 @@
 	}
 	if (ret == 0)
 		ret = index_storage_mailbox_update(box, update);
-	maildir_uidlist_unlock(uidlist);
+	if (locked)
+		maildir_uidlist_unlock(uidlist);
 	return ret;
 }
 


More information about the dovecot-cvs mailing list