From: Adam Dickmeiss Date: Wed, 7 Oct 2009 10:32:35 +0000 (+0200) Subject: Fix bug WRT inconsistent registers, bug #3062. X-Git-Tag: v2.0.42~3 X-Git-Url: http://sru.miketaylor.org.uk/cgi-bin?a=commitdiff_plain;h=78ea086524d422fb7a5ce249d89ae5eb60009d65;p=idzebra-moved-to-github.git Fix bug WRT inconsistent registers, bug #3062. For a many create+drop of DBs the ordinalSU will increase. This, in turn will lead to a bigger resulting indexing term beyond length IT_MAX_WORD - for the compressed temp files. This patch increases the indexing buffer for the term to INP_NAME_MAX which is a log higher than IT_MAX_WORD. The too-small size resulted in a truncations of long terms (in fact phrases) that would be wrongly matched against the ISAM. --- diff --git a/index/kinput.c b/index/kinput.c index f5afa44..de1d563 100644 --- a/index/kinput.c +++ b/index/kinput.c @@ -185,7 +185,7 @@ int key_file_read(struct key_file *f, char *key) key[i++] = c; while ((c = key_file_getc(f))) { - if (i <= IT_MAX_WORD) + if (i < INP_NAME_MAX-2) key[i++] = c; } key[i++] = '\0'; @@ -360,7 +360,7 @@ static int heap_read_one(struct heap_info *hi, char *name, char *key) /* for debugging only */ void zebra_log_dict_entry(ZebraHandle zh, const char *s) { - char dst[IT_MAX_WORD+1]; + char dst[INP_NAME_MAX+1]; int ord; int len = key_SU_decode(&ord, (const unsigned char *) s); const char *index_type;