aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-12-06 05:15:32 +0000
committerBruce Momjian <bruce@momjian.us>2002-12-06 05:15:32 +0000
commitab6e38e40a4c45fd4be3bb52a87b0267de0ce16d (patch)
tree3aa157d4d5e5208583b338bbb851bd703ad63c43
parent500677c40fab730eaf6940b2f1ddd6152b3dfc29 (diff)
downloadpostgresql-ab6e38e40a4c45fd4be3bb52a87b0267de0ce16d.tar.gz
postgresql-ab6e38e40a4c45fd4be3bb52a87b0267de0ce16d.zip
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];