Fix a bug where bigram search would never return
Bug: 4690487
Change-Id: Ie8f3f651508cc48bbb043a0b308f7e0d1524371c
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 7bcdbb4..c294cf3 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -932,15 +932,16 @@
// TODO: use uint32_t instead of unsigned short
bool UnigramDictionary::isValidWord(unsigned short *word, int length) {
if (IS_LATEST_DICT_VERSION) {
- return (getFrequency(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
} else {
- return (getFrequency(0, word, 0, length) != NOT_VALID_WORD);
+ return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD);
}
}
// Require strict exact match.
-int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, int length) const {
+int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset,
+ int length) const {
// returns address of bigram data of that word
// return -99 if not found
@@ -957,7 +958,7 @@
}
} else {
if (childPos != 0) {
- int t = getFrequency(childPos, word, offset + 1, length);
+ int t = getBigramPosition(childPos, word, offset + 1, length);
if (t > 0) {
return t;
}