changeset 238:acb77be5d683 HEAD

bugfixes
author Timo Sirainen <tss@iki.fi>
date Mon, 16 Sep 2002 07:16:16 +0300
parents 06d6eca0a45f
children 1e05ff078961
files src/lib-index/mail-index.c
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index.c	Mon Sep 16 07:01:35 2002 +0300
+++ b/src/lib-index/mail-index.c	Mon Sep 16 07:16:16 2002 +0300
@@ -43,7 +43,10 @@
 	index->last_lookup_seq = 0;
 	index->last_lookup = NULL;
 
+	/* keep the header set even if we fail, so we can update the flags */
 	hdr = index->mmap_base;
+	index->header = hdr;
+
 	if (hdr->used_file_size > index->mmap_full_length) {
 		index_set_corrupted(index, "used_file_size larger than real "
 				    "file size (%"PRIuUOFF_T" vs %"PRIuSIZE_T
@@ -74,7 +77,6 @@
 		return FALSE;
 	}
 
-	index->header = hdr;
 	index->sync_id = hdr->sync_id;
 	index->mmap_used_length = hdr->used_file_size;
 	return TRUE;
@@ -933,7 +935,7 @@
 	if (grow_size < 16)
 		grow_size = 16;
 
-	pos = index->mmap_full_length + grow_size;
+	pos = index->mmap_full_length + (grow_size * sizeof(MailIndexRecord));
 	i_assert(pos < OFF_T_MAX);
 
 	if (index->anon_mmap) {
@@ -979,8 +981,8 @@
 	}
 
 	i_assert(index->header->used_file_size == index->mmap_used_length);
-	i_assert(index->mmap_used_length <=
-		 index->mmap_full_length - sizeof(MailIndexRecord));
+	i_assert(index->mmap_used_length + sizeof(MailIndexRecord) <=
+		 index->mmap_full_length);
 
 	destrec = (MailIndexRecord *) ((char *) index->mmap_base +
 				       index->mmap_used_length);