# HG changeset patch # User Timo Sirainen # Date 1031083009 -10800 # Node ID 90a604e78df14ee02119d931fa16a1ccd7f9c668 # Parent cf7de0db6ba87b0d896e71269c6c8c5c011ddbbe previous fix for updating initial message flags wasn't done correctly diff -r cf7de0db6ba8 -r 90a604e78df1 src/lib-index/mail-index.c --- a/src/lib-index/mail-index.c Tue Sep 03 22:31:00 2002 +0300 +++ b/src/lib-index/mail-index.c Tue Sep 03 22:56:49 2002 +0300 @@ -1137,8 +1137,8 @@ return seq; } -static void index_mark_flag_changes(MailIndex *index, MailIndexRecord *rec, - MailFlags old_flags, MailFlags new_flags) +void mail_index_mark_flag_changes(MailIndex *index, MailIndexRecord *rec, + MailFlags old_flags, MailFlags new_flags) { if ((old_flags & MAIL_SEEN) == 0 && (new_flags & MAIL_SEEN)) { /* unseen -> seen */ @@ -1222,6 +1222,7 @@ uoff_t pos; i_assert(index->lock_type == MAIL_LOCK_EXCLUSIVE); + i_assert(seq != 0); i_assert(rec->uid != 0); if (seq != 0 && index->modifylog != NULL) { @@ -1291,7 +1292,7 @@ } hdr->messages_count--; - index_mark_flag_changes(index, rec, rec->msg_flags, 0); + mail_index_mark_flag_changes(index, rec, rec->msg_flags, 0); if ((hdr->first_hole_position - sizeof(MailIndexHeader)) / sizeof(MailIndexRecord) == hdr->messages_count) { @@ -1311,12 +1312,12 @@ int external_change) { i_assert(index->lock_type == MAIL_LOCK_EXCLUSIVE); - i_assert(seq != 0 || !external_change); + i_assert(seq != 0); if (flags == rec->msg_flags) return TRUE; /* no changes */ - index_mark_flag_changes(index, rec, rec->msg_flags, flags); + mail_index_mark_flag_changes(index, rec, rec->msg_flags, flags); rec->msg_flags = flags; return index->modifylog == NULL ? TRUE : @@ -1346,7 +1347,7 @@ } index->header->messages_count++; - index_mark_flag_changes(index, *rec, 0, (*rec)->msg_flags); + mail_index_mark_flag_changes(index, *rec, 0, (*rec)->msg_flags); if (index->hash != NULL) mail_hash_update(index->hash, (*rec)->uid, (uoff_t)pos); diff -r cf7de0db6ba8 -r 90a604e78df1 src/lib-index/maildir/maildir-build.c --- a/src/lib-index/maildir/maildir-build.c Tue Sep 03 22:31:00 2002 +0300 +++ b/src/lib-index/maildir/maildir-build.c Tue Sep 03 22:56:49 2002 +0300 @@ -60,6 +60,10 @@ if (rec == NULL) return FALSE; + /* set message flags from file name */ + rec->msg_flags = maildir_filename_get_flags(fname, 0); + mail_index_mark_flag_changes(index, rec, 0, rec->msg_flags); + update = index->update_begin(index, rec); /* set the location */ @@ -75,11 +79,6 @@ return FALSE; } - /* set message flags from file name, after location field is saved */ - if (!index->update_flags(index, rec, 0, - maildir_filename_get_flags(fname, 0), FALSE)) - return FALSE; - return TRUE; } diff -r cf7de0db6ba8 -r 90a604e78df1 src/lib-index/mbox/mbox-append.c --- a/src/lib-index/mbox/mbox-append.c Tue Sep 03 22:31:00 2002 +0300 +++ b/src/lib-index/mbox/mbox-append.c Tue Sep 03 22:56:49 2002 +0300 @@ -139,6 +139,10 @@ if (rec == NULL) return FALSE; + /* save message flags */ + rec->msg_flags = ctx.flags; + mail_index_mark_flag_changes(index, rec, 0, rec->msg_flags); + update = index->update_begin(index, rec); /* location = offset to beginning of headers in message */ @@ -171,10 +175,6 @@ return FALSE; } - /* save message flags, after location field is saved */ - if (!index->update_flags(index, rec, 0, ctx.flags, FALSE)) - return FALSE; - return TRUE; }