diff options
author | Peng Wu <alexepico@gmail.com> | 2016-07-06 16:34:53 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2016-07-06 16:34:53 +0800 |
commit | 9175eca04bac68fa4be1a6e1ef054ddd7f208e8c (patch) | |
tree | 8742bc82520f681fc7856b483614862f676e1e9f /src/pinyin.cpp | |
parent | f7a44387af9407d3d9d3224b5eec5077fe141445 (diff) | |
download | libpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.tar.gz libpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.tar.xz libpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.zip |
add safe guards
Diffstat (limited to 'src/pinyin.cpp')
-rw-r--r-- | src/pinyin.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp index 414cd38..8500311 100644 --- a/src/pinyin.cpp +++ b/src/pinyin.cpp @@ -2335,7 +2335,7 @@ bool pinyin_get_pinyin_offset(pinyin_instance_t * instance, size_t cursor, size_t * poffset) { PhoneticKeyMatrix & matrix = instance->m_matrix; - size_t offset = cursor; + size_t offset = std_lite::min(cursor, instance->m_parsed_len); /* find the first ChewingKey. */ for (; offset > 0; --offset) { @@ -2560,6 +2560,7 @@ bool pinyin_get_full_pinyin_auxiliary_text(pinyin_instance_t * instance, return false; } + cursor = std_lite::min(cursor, instance->m_parsed_len); gchar * prefix = _get_aux_text_prefix (instance, cursor, IS_PINYIN); gchar * postfix = _get_aux_text_postfix @@ -2618,6 +2619,7 @@ bool pinyin_get_double_pinyin_auxiliary_text(pinyin_instance_t * instance, return false; } + cursor = std_lite::min(cursor, instance->m_parsed_len); gchar * prefix = _get_aux_text_prefix (instance, cursor, IS_PINYIN); gchar * postfix = _get_aux_text_postfix @@ -2695,6 +2697,7 @@ bool pinyin_get_chewing_auxiliary_text(pinyin_instance_t * instance, return false; } + cursor = std_lite::min(cursor, instance->m_parsed_len); gchar * prefix = _get_aux_text_prefix (instance, cursor, IS_ZHUYIN); gchar * postfix = _get_aux_text_postfix |