summaryrefslogtreecommitdiffstats
path: root/src/storage/zhuyin_parser2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage/zhuyin_parser2.cpp')
-rw-r--r--src/storage/zhuyin_parser2.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/storage/zhuyin_parser2.cpp b/src/storage/zhuyin_parser2.cpp
index 9ae7fbd..99ae4d2 100644
--- a/src/storage/zhuyin_parser2.cpp
+++ b/src/storage/zhuyin_parser2.cpp
@@ -250,6 +250,9 @@ int ZhuyinSimpleParser2::parse(pinyin_option_t options,
if (0 == i) /* no more possible chewings. */
break;
+ if (!key.is_valid_zhuyin())
+ break;
+
key_rest.m_raw_begin = parsed_len; key_rest.m_raw_end = parsed_len + i;
parsed_len += i;
@@ -437,6 +440,9 @@ int ZhuyinDiscreteParser2::parse(pinyin_option_t options,
if (0 == i) /* no more possible chewings. */
break;
+ if (!key.is_valid_zhuyin())
+ break;
+
key_rest.m_raw_begin = parsed_len; key_rest.m_raw_end = parsed_len + i;
parsed_len += i;
@@ -741,6 +747,9 @@ int ZhuyinDaChenCP26Parser2::parse(pinyin_option_t options,
if (0 == i) /* no more possible chewings. */
break;
+ if (!key.is_valid_zhuyin())
+ break;
+
key_rest.m_raw_begin = parsed_len; key_rest.m_raw_end = parsed_len + i;
parsed_len += i;
@@ -762,6 +771,9 @@ int ZhuyinDaChenCP26Parser2::parse(pinyin_option_t options,
break;
}
+ if (!key.is_valid_zhuyin())
+ return parsed_len;
+
if (i > 0) { /* found one */
key_rest.m_raw_begin = parsed_len; key_rest.m_raw_end = parsed_len + i;
parsed_len += i;
@@ -911,6 +923,13 @@ int ZhuyinDirectParser2::parse(pinyin_option_t options,
next = i;
if (parse_one_key(options, key, str + cur, next - cur)) {
+#if 0
+ /* as direct parser handles data source,
+ assume the data is correct when loading. */
+ if (!key.is_valid_zhuyin())
+ return parsed_len;
+#endif
+
key_rest.m_raw_begin = cur; key_rest.m_raw_end = next;
/* save the pinyin. */