changeset 7013:7966e025ac0f HEAD

maildir_uidlist_set_ext() assert-crashed when trying to set it to expunged message or so new message that we hadn't yet refreshed uidlist since seeing it.
author Timo Sirainen <tss@iki.fi>
date Fri, 21 Dec 2007 21:05:14 +0200
parents 2f25031c4a84
children 6835ac721609
files src/lib-storage/index/maildir/maildir-uidlist.c
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Fri Dec 21 19:46:24 2007 +0200
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Fri Dec 21 21:05:14 2007 +0200
@@ -837,7 +837,16 @@
 	unsigned int len;
 
 	rec = maildir_uidlist_lookup_rec(uidlist, uid, &idx);
-	i_assert(rec != NULL);
+	if (rec == NULL) {
+		/* maybe it's a new message */
+		if (maildir_uidlist_refresh(uidlist) < 0)
+			return;
+		rec = maildir_uidlist_lookup_rec(uidlist, uid, &idx);
+		if (rec == NULL) {
+			/* message is already expunged, ignore */
+			return;
+		}
+	}
 
 	buf = buffer_create_dynamic(pool_datastack_create(), 128);