changeset 6550:db6afac39fde HEAD

Fixed "file size unexpectedly shrinked" error in some conditions.
author Timo Sirainen <tss@iki.fi>
date Tue, 16 Oct 2007 19:22:17 +0300
parents bf5293708132
children 9bdc9ecfc470
files src/lib-storage/index/mbox/istream-raw-mbox.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/istream-raw-mbox.c	Tue Oct 16 17:58:03 2007 +0300
+++ b/src/lib-storage/index/mbox/istream-raw-mbox.c	Tue Oct 16 19:22:17 2007 +0300
@@ -287,7 +287,9 @@
 		new_pos = from_start_pos;
 	} else {
 		/* leave out the beginnings of potential From-line + CR */
-		new_pos = i - (fromp - mbox_from) - 1;
+		new_pos = i - (fromp - mbox_from);
+		if (new_pos > 0)
+			new_pos--;
 	}
 
 	stream->buffer = buf;
@@ -481,6 +483,8 @@
 	i_assert(rstream->body_offset != (uoff_t)-1);
 
 	if (rstream->mail_size != (uoff_t)-1) {
+		i_assert(rstream->mail_size >
+			 rstream->body_offset - rstream->hdr_offset);
 		return rstream->mail_size -
 			(rstream->body_offset - rstream->hdr_offset);
 	}
@@ -499,6 +503,8 @@
 		i_stream_skip(stream, size);
 
 	i_assert(rstream->mail_size != (uoff_t)-1);
+	i_assert(rstream->mail_size >
+		 rstream->body_offset - rstream->hdr_offset);
 	return rstream->mail_size -
 		(rstream->body_offset - rstream->hdr_offset);
 }