# HG changeset patch # User Timo Sirainen # Date 1174854413 -10800 # Node ID 3ec03a4c0f260652f7318e0d57ca286462b1e8b9 # Parent 874210e30dba7cd6033d054fe571d8de2a8c0322 fixes diff -r 874210e30dba -r 3ec03a4c0f26 src/plugins/fts-squat/squat-trie.c --- 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) diff -r 874210e30dba -r 3ec03a4c0f26 src/plugins/fts-squat/squat-uidlist.c --- 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;