# HG changeset patch # User Timo Sirainen # Date 1173880161 -7200 # Node ID 70fea9bab83737ff38ae6dce773164d72bec94c4 # Parent db232a0791065dc88610ee35859736513d726fbc View syncing fixes diff -r db232a079106 -r 70fea9bab837 src/lib-index/mail-index-view-sync.c --- a/src/lib-index/mail-index-view-sync.c Wed Mar 14 14:42:27 2007 +0200 +++ b/src/lib-index/mail-index-view-sync.c Wed Mar 14 15:49:21 2007 +0200 @@ -452,7 +452,7 @@ /* Apply transaction to view's mapping if needed (meaning we didn't just re-map the view to head mapping). */ - if (ctx->sync_map_update) { + if (ctx->sync_map_update && !synced_to_map) { i_assert((ctx->hdr->type & MAIL_TRANSACTION_EXPUNGE) == 0); @@ -646,10 +646,22 @@ } if (ctx->sync_map_update) { - view->map->hdr.log_file_seq = view->log_file_seq; - view->map->hdr.log_file_int_offset = + if (view->log_file_seq != view->map->hdr.log_file_seq) { + i_assert(view->log_file_seq > + view->map->hdr.log_file_seq); + view->map->hdr.log_file_seq = view->log_file_seq; view->map->hdr.log_file_ext_offset = - view->log_file_offset; + view->log_file_offset; + } else { + i_assert(view->log_file_offset >= + view->map->hdr.log_file_int_offset); + if (view->log_file_offset > + view->map->hdr.log_file_ext_offset) { + view->map->hdr.log_file_ext_offset = + view->log_file_offset; + } + } + view->map->hdr.log_file_int_offset = view->log_file_offset; } view->hdr = view->map->hdr;