From 4e71240dbb64b08d16e41ebf60898602124b303d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 4 Jul 2000 06:29:27 +0000 Subject: [PATCH] Now that I look at it, is_stopword() is broken and always has been. Doesn't anyone remember how to program a binary search?? --- contrib/fulltextindex/fti.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/contrib/fulltextindex/fti.c b/contrib/fulltextindex/fti.c index be4522321d..a98fcd47dc 100644 --- a/contrib/fulltextindex/fti.c +++ b/contrib/fulltextindex/fti.c @@ -351,10 +351,9 @@ is_stopword(char *text) StopLow = &StopWords[0]; /* initialize stuff for binary search */ StopHigh = endof(StopWords); - if (lengthof(StopWords) == 0) - return false; + /* Loop invariant: *StopLow <= text < *StopHigh */ - while (StopLow <= StopHigh) + while (StopLow < StopHigh) { StopMiddle = StopLow + (StopHigh - StopLow) / 2; difference = strcmp(*StopMiddle, text); @@ -363,7 +362,7 @@ is_stopword(char *text) else if (difference < 0) StopLow = StopMiddle + 1; else - StopHigh = StopMiddle - 1; + StopHigh = StopMiddle; } return (false);