summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2002-12-06 05:15:02 +0000
committerBruce Momjian2002-12-06 05:15:02 +0000
commita2bd3e208591b49b8cbd770039ad7658d25218c4 (patch)
treecf943022ddf9f5b4487c1be3fb00da3676da62db
parentf679690621d38ed7870ecb9cc82e9ac75bbe018e (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.c4
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];