[dovecot-cvs] dovecot/src/lib-storage/index index-sync.c,1.30,1.31

cras at procontrol.fi cras at procontrol.fi
Mon May 10 02:06:29 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/index
In directory talvi:/tmp/cvs-serv29121/lib-storage/index

Modified Files:
	index-sync.c 
Log Message:
syncing fixes



Index: index-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-sync.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- index-sync.c	1 May 2004 18:30:52 -0000	1.30
+++ index-sync.c	9 May 2004 23:06:27 -0000	1.31
@@ -15,7 +15,7 @@
 	size_t i, expunges_count;
 	void *sc_context;
 	enum mail_index_sync_type sync_mask;
-	uint32_t seq, new_count, recent_count;
+	uint32_t seq, messages_count, recent_count;
 	int ret, appends;
 
 	sync_mask = MAIL_INDEX_SYNC_MASK_ALL;
@@ -39,6 +39,8 @@
 	sc_context = ibox->storage->callback_context;
 	appends = FALSE;
 
+	messages_count = mail_index_view_get_message_count(ibox->view);
+
 	memset(&full_flags, 0, sizeof(full_flags));
 	while ((ret = mail_index_view_sync_next(ctx, &sync)) > 0) {
 		switch (sync.type) {
@@ -52,6 +54,9 @@
 			if (sc->update_flags == NULL)
 				break;
 
+			if (sync.seq2 > messages_count)
+				sync.seq2 = messages_count;
+
 			/* FIXME: hide the flag updates for expunged messages */
 			for (seq = sync.seq1; seq <= sync.seq2; seq++) {
 				if (mail_index_lookup(ibox->view,
@@ -72,7 +77,10 @@
 
 	if (sc->expunge != NULL) {
 		for (i = expunges_count*2; i > 0; i -= 2) {
-			for (seq = expunges[i-1]; seq >= expunges[i-2]; seq--)
+			seq = expunges[i-1];
+			if (seq > messages_count)
+				seq = messages_count;
+			for (; seq >= expunges[i-2]; seq--)
 				sc->expunge(&ibox->box, seq, sc_context);
 		}
 	}
@@ -80,9 +88,9 @@
 	mail_index_view_sync_end(ctx);
 
 	if (appends) {
-		new_count = mail_index_view_get_message_count(ibox->view);
+		messages_count = mail_index_view_get_message_count(ibox->view);
 		recent_count = ibox->get_recent_count(ibox);
-		sc->new_messages(&ibox->box, new_count, recent_count,
+		sc->new_messages(&ibox->box, messages_count, recent_count,
 				 sc_context);
 	}
 



More information about the dovecot-cvs mailing list