Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3844f74a authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

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
parent 23a357d7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -97,6 +97,9 @@ int Ver4PatriciaTriePolicy::getWordId(const CodePointArrayView wordCodePoints,
        return NOT_A_WORD_ID;
    }
    const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
    if (ptNodeParams.isDeleted()) {
        return NOT_A_WORD_ID;
    }
    return ptNodeParams.getTerminalId();
}

+6 −1
Original line number Diff line number Diff line
@@ -746,7 +746,12 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
        assertTrue(binaryDictionary.isValidWord("aaa"));
        assertTrue(binaryDictionary.removeUnigramEntry("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();
    }