aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2013-10-18 19:53:57 +0900
committerThe Android Automerger <android-build@google.com>2013-10-22 05:23:48 -0700
commit6bc5acaa793e0311fcfa4a0f12c49ced6d792729 (patch)
tree69fbe0b1f7ce2e77aebd06b112d1af19dc247013 /native/jni/src
parent7da2295328a16d061a94c46c4cab21e46370ab41 (diff)
downloadlatinime-6bc5acaa793e0311fcfa4a0f12c49ced6d792729.tar.gz
latinime-6bc5acaa793e0311fcfa4a0f12c49ced6d792729.tar.xz
latinime-6bc5acaa793e0311fcfa4a0f12c49ced6d792729.zip
Fix: Suggested words from user history are invalid.
- Suggestions form user history can contain invalid words. - isValidWord always returns false. Bug: 11139426 Change-Id: I6075b275603332ddb00f4a9284afcaa82d824270
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
index a8ea69f3c..495b146c2 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
@@ -55,9 +55,16 @@ void DynamicPatriciaTriePolicy::createAndGetAllChildNodes(const DicNode *const d
readingHelper.initWithPtNodeArrayPos(dicNode->getChildrenPos());
const DynamicPatriciaTrieNodeReader *const nodeReader = readingHelper.getNodeReader();
while (!readingHelper.isEnd()) {
+ bool isTerminal = nodeReader->isTerminal() && !nodeReader->isDeleted();
+ if (isTerminal && mHeaderPolicy.isDecayingDict()) {
+ // A DecayingDict may have a terminal PtNode that has a terminal DicNode whose
+ // probability is NOT_A_PROBABILITY. In such case, we don't want to treat it as a
+ // valid terminal DicNode.
+ isTerminal = getProbability(nodeReader->getProbability(), NOT_A_PROBABILITY)
+ != NOT_A_PROBABILITY;
+ }
childDicNodes->pushLeavingChild(dicNode, nodeReader->getHeadPos(),
- nodeReader->getChildrenPos(), nodeReader->getProbability(),
- nodeReader->isTerminal() && !nodeReader->isDeleted(),
+ nodeReader->getChildrenPos(), nodeReader->getProbability(), isTerminal,
nodeReader->hasChildren(), nodeReader->isBlacklisted() || nodeReader->isNotAWord(),
nodeReader->getCodePointCount(), readingHelper.getMergedNodeCodePoints());
readingHelper.readNextSiblingNode();