Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/mbox/mbox-sync-rewrite.c @ 2693:ba7cd618d916 HEAD
crashfix
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 05 Oct 2004 23:40:52 +0300 |
parents | 482e1a1fe2ce |
children | 479680ed12ee |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-rewrite.c Tue Oct 05 23:01:05 2004 +0300 +++ b/src/lib-storage/index/mbox/mbox-sync-rewrite.c Tue Oct 05 23:40:52 2004 +0300 @@ -320,7 +320,9 @@ (mail_ctx.body_offset - mail_ctx.hdr_offset); i_assert(need_space == (uoff_t)-mails[idx].space); - if (padding < (uoff_t)mail_ctx.mail.space) { + if (mail_ctx.mail.space == 0) { + /* don't touch spacing */ + } else if (padding < (uoff_t)mail_ctx.mail.space) { mbox_sync_headers_remove_space(&mail_ctx, mail_ctx.mail.space - padding); } else { @@ -348,7 +350,6 @@ mails[idx].offset = dest_offset + (mail_ctx.mail.offset - mail_ctx.hdr_offset); mails[idx].space = mail_ctx.mail.space; - i_assert(mails[idx].space == padding); if (mails[idx].from_offset == 0) { sync_ctx->base_uid_last = @@ -407,7 +408,7 @@ if (mails[idx].space <= 0 && (mails[idx].flags & MBOX_EXPUNGED) == 0) { /* give space to this mail */ - next_move_diff = -mails[idx].space + padding_per_mail; + next_move_diff = -mails[idx].space; if (mbox_sync_read_and_move(sync_ctx, mails, first_seq + idx, idx, padding_per_mail, move_diff, @@ -415,7 +416,7 @@ ret = -1; break; } - move_diff -= next_move_diff; + move_diff -= next_move_diff + mails[idx].space; } else { /* this mail provides more space. just move it forward from the extra space offset and set end_offset to