changeset 2693:ba7cd618d916 HEAD

crashfix
author Timo Sirainen <tss@iki.fi>
date Tue, 05 Oct 2004 23:40:52 +0300
parents 1065a557516b
children 7b24c608f225
files src/lib-storage/index/mbox/mbox-sync-rewrite.c
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
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