changeset 6359:c54c07f30a97 HEAD

Fixed opening indexes to memory.
author Timo Sirainen <tss@iki.fi>
date Sun, 09 Sep 2007 03:59:09 +0300
parents 6bd13d514294
children 461ae76c84da
files src/lib-index/mail-index.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index.c	Sun Sep 09 03:58:57 2007 +0300
+++ b/src/lib-index/mail-index.c	Sun Sep 09 03:59:09 2007 +0300
@@ -415,9 +415,11 @@
 		(void)mail_index_try_open(index);
 
 		if (index->indexid == 0) {
-			/* create a new indexid for us */
+			/* Create a new indexid for us. If we're opening index
+			   into memory, index->map doesn't exist yet. */
 			index->indexid = ioloop_time;
-			index->map->hdr.indexid = index->indexid;
+			if (index->map != NULL)
+				index->map->hdr.indexid = index->indexid;
 		}
 
 		ret = mail_transaction_log_create(index->log);
@@ -429,8 +431,11 @@
 			/* doesn't exist / corrupted */
 			mail_transaction_log_close(index->log);
 			ret = mail_transaction_log_create(index->log);
-			if (ret == 0)
+			if (ret == 0) {
+				if (index->map != NULL)
+					mail_index_unmap(&index->map);
 				index->map = mail_index_map_alloc(index);
+			}
 		}
 	}
 	if (ret < 0) {