diff options
Diffstat (limited to 'src/PropSet.cxx')
-rw-r--r-- | src/PropSet.cxx | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/PropSet.cxx b/src/PropSet.cxx index 41b2d5eff..a1ed39da6 100644 --- a/src/PropSet.cxx +++ b/src/PropSet.cxx @@ -838,8 +838,8 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1 // Found another word first = pivot; end = pivot - 1; - } - else if (cond > 0) + } + else if (cond > 0) start = pivot + 1; else if (cond <= 0) break; @@ -875,8 +875,8 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1 // Found another word first = pivot; end = pivot - 1; - } - else if (cond > 0) + } + else if (cond > 0) start = pivot + 1; else if (cond <= 0) break; @@ -937,8 +937,9 @@ char *WordList::GetNearestWords( const char *wordStart, int searchLen /*= -1*/, bool ignoreCase /*= false*/, - char otherSeparator /*= '\0'*/) { - int wordlen; // length of the word part (before the '(' brace) of the api array element + char otherSeparator /*= '\0'*/, + bool exactLen /*=false*/) { + unsigned int wordlen; // length of the word part (before the '(' brace) of the api array element SString wordsNear; wordsNear.setsizegrowth(1000); int start = 0; // lower bound of the api array block to search @@ -968,6 +969,8 @@ char *WordList::GetNearestWords( (0 == CompareNCaseInsensitive(wordStart, wordsNoCase[pivot], searchLen))) { wordlen = LengthWord(wordsNoCase[pivot], otherSeparator) + 1; + if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1) + break; wordsNear.append(wordsNoCase[pivot], wordlen, ' '); ++pivot; } @@ -994,6 +997,8 @@ char *WordList::GetNearestWords( (0 == strncmp(wordStart, words[pivot], searchLen))) { wordlen = LengthWord(words[pivot], otherSeparator) + 1; + if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1) + break; wordsNear.append(words[pivot], wordlen, ' '); ++pivot; } |