summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-05-29 10:48:27 +0800
committerPeng Wu <alexepico@gmail.com>2012-05-29 10:48:27 +0800
commit6b2c3bad390dc5073fb12ae841d2fa061bc1a557 (patch)
treea0be96e2fe994c71e483ef674c245e72e2d6d040
parent8a169a4f2db04e2d8bd6c442696a606fc389923a (diff)
downloadlibpinyin-6b2c3bad390dc5073fb12ae841d2fa061bc1a557.tar.gz
libpinyin-6b2c3bad390dc5073fb12ae841d2fa061bc1a557.tar.xz
libpinyin-6b2c3bad390dc5073fb12ae841d2fa061bc1a557.zip
fixes pinyin_choose_full_pinyin_candidate
-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;