diff options
author | Bruce Momjian | 2002-12-06 05:15:02 +0000 |
---|---|---|
committer | Bruce Momjian | 2002-12-06 05:15:02 +0000 |
commit | a2bd3e208591b49b8cbd770039ad7658d25218c4 (patch) | |
tree | cf943022ddf9f5b4487c1be3fb00da3676da62db | |
parent | f679690621d38ed7870ecb9cc82e9ac75bbe018e (diff) |
Thank you very much, you catch it :). This bug had a long life, because it
exists if and only if locale of postmaster
was a different from C (or ru_RU.KOI8-R).
Please, apply patch for current CVS & 7.3.1
Magnus Naeslund(f) wrote:
> Ok, I nailed the bug, but i'm not sure what the correct fix is.
> Attached tsearch_morph.diff that remedies this problem by avoiding it.
> Also there's a debug aid patch if someone would like to know how i
> finally found it out :)
>
> There problem in the lemmatize() function is that GETDICT(...) returned
> a value not handled (BYLOCALE).
> The value (-1) and later used as an index into the dicts[] array.
> After that everything went berserk stack went crazy somehow so trapping
> the fault sent me to the wrong place, and every time i read the value it
> was positive ;)
>
> So now i just return the initial word passed to the lemmatize function,
> because i don't know what to do with it.
Magnus Naeslund
-rw-r--r-- | contrib/tsearch/morph.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/contrib/tsearch/morph.c b/contrib/tsearch/morph.c index 4394448737d..3acbef98623 100644 --- a/contrib/tsearch/morph.c +++ b/contrib/tsearch/morph.c @@ -173,6 +173,10 @@ lemmatize(char *word, int *len, int type) /* word is stopword */ return NULL; } + else if (nd == BYLOCALE) + { + continue; /* no dict for current locale */ + } else { dict = &dicts[nd]; |