Fix: deleted PtNode handling in v403.

If a word is once deleted, the word never gets into the
personalized dictionaries due to this bug.

Change-Id: Ife4e3fe1ba0615b4135e6291d2151b0db7d3f940
This commit is contained in:
Keisuke Kuroyanagi 2014-10-27 15:32:05 +09:00
parent 23a357d71d
commit 3844f74aff
2 changed files with 9 additions and 1 deletions

View file

@ -97,6 +97,9 @@ int Ver4PatriciaTriePolicy::getWordId(const CodePointArrayView wordCodePoints,
return NOT_A_WORD_ID; return NOT_A_WORD_ID;
} }
const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos); const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
if (ptNodeParams.isDeleted()) {
return NOT_A_WORD_ID;
}
return ptNodeParams.getTerminalId(); return ptNodeParams.getTerminalId();
} }

View file

@ -746,7 +746,12 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
assertTrue(binaryDictionary.isValidWord("aaa")); assertTrue(binaryDictionary.isValidWord("aaa"));
assertTrue(binaryDictionary.removeUnigramEntry("aaa")); assertTrue(binaryDictionary.removeUnigramEntry("aaa"));
assertFalse(binaryDictionary.isValidWord("aaa")); assertFalse(binaryDictionary.isValidWord("aaa"));
onInputWord(binaryDictionary, "aaa", false /* isValidWord */);
assertFalse(binaryDictionary.isValidWord("aaa"));
onInputWord(binaryDictionary, "aaa", false /* isValidWord */);
assertTrue(binaryDictionary.isValidWord("aaa"));
assertTrue(binaryDictionary.removeUnigramEntry("aaa"));
assertFalse(binaryDictionary.isValidWord("aaa"));
binaryDictionary.close(); binaryDictionary.close();
} }