changeset 5414:3ec03a4c0f26 HEAD

fixes
author Timo Sirainen <tss@iki.fi>
date Sun, 25 Mar 2007 23:26:53 +0300
parents 874210e30dba
children 4ba74fec49a4
files src/plugins/fts-squat/squat-trie.c src/plugins/fts-squat/squat-uidlist.c
diffstat 2 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-squat/squat-trie.c	Sun Mar 25 21:45:01 2007 +0300
+++ b/src/plugins/fts-squat/squat-trie.c	Sun Mar 25 23:26:53 2007 +0300
@@ -1746,7 +1746,7 @@
 		node_pack_leaf(trie->buf, node);
 	} else {
 		struct trie_node **children8 = NODE_CHILDREN8(node);
-		struct trie_node **children16 = NODE_CHILDREN16(node, 0);
+		struct trie_node **children16;
 
 		if ((ret = squat_trie_compress_children(ctx, children8,
 							node->chars_8bit_count,
@@ -1754,6 +1754,8 @@
 			return -1;
 		if (ret == 0)
 			squat_trie_compress_chars8(node);
+
+		children16 = NODE_CHILDREN16(node, 0);
 		if ((ret = squat_trie_compress_children(ctx, children16,
 							node->chars_16bit_count,
 							level + 1)) < 0)
--- a/src/plugins/fts-squat/squat-uidlist.c	Sun Mar 25 21:45:01 2007 +0300
+++ b/src/plugins/fts-squat/squat-uidlist.c	Sun Mar 25 23:26:53 2007 +0300
@@ -110,6 +110,11 @@
 				      const struct squat_uidlist_header *hdr,
 				      uoff_t file_size)
 {
+	if (hdr->used_file_size == 0) {
+		/* crashed before writing was finished */
+		return -1;
+	}
+
 	if (hdr->uidvalidity != uidlist->uidvalidity) {
 		squat_trie_set_corrupted(uidlist->trie,
 					 "uidlist: uidvalidity changed");
@@ -277,7 +282,8 @@
 	uidlist->mmap_disable = mmap_disable;
 	i_array_init(&uidlist->lists, 65536);
 	uidlist->node_pool =
-		pool_alloconly_create("squat uidlist node pool", 65536);
+		pool_alloconly_create(MEMPOOL_GROWING"squat uidlist node pool",
+				      65536);
 	uidlist->tmp_buf = buffer_create_dynamic(default_pool, 16);
 	uidlist->list_buf = buffer_create_dynamic(default_pool, 256);
 	return uidlist;