summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2016-07-06 16:34:53 +0800
committerPeng Wu <alexepico@gmail.com>2016-07-06 16:34:53 +0800
commit9175eca04bac68fa4be1a6e1ef054ddd7f208e8c (patch)
tree8742bc82520f681fc7856b483614862f676e1e9f
parentf7a44387af9407d3d9d3224b5eec5077fe141445 (diff)
downloadlibpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.tar.gz
libpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.tar.xz
libpinyin-9175eca04bac68fa4be1a6e1ef054ddd7f208e8c.zip
add safe guards
-rw-r--r--src/pinyin.cpp5
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