summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/pinyin.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index 574b684..baf64ea 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -1144,11 +1144,16 @@ int pinyin_choose_full_pinyin_candidate(pinyin_instance_t * instance,
/* Note: there may be some un-parsable input here. */
}
+ /* sync m_constraints to the length of m_pinyin_keys. */
+ bool retval = context->m_pinyin_lookup->validate_constraint
+ (instance->m_constraints, instance->m_pinyin_keys);
+
phrase_token_t token = candidate->m_token;
guint8 len = context->m_pinyin_lookup->add_constraint
(instance->m_constraints, offset, token);
- bool retval = context->m_pinyin_lookup->validate_constraint
+ /* safe guard: validate the m_constraints again. */
+ retval = context->m_pinyin_lookup->validate_constraint
(instance->m_constraints, instance->m_pinyin_keys) && len;
return offset + len;