summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-04-25 13:00:57 +0800
committerPeng Wu <alexepico@gmail.com>2012-04-25 13:00:57 +0800
commit6046c7de7d8cc3e489f0e256f9f603520c5ddb1a (patch)
treefc42c4e23d608f79aaf491d4be6b033f19f9a1d5
parentda3c53805ddb2f3849ba3e5df9731d484531cd29 (diff)
downloadlibpinyin-6046c7de7d8cc3e489f0e256f9f603520c5ddb1a.tar.gz
libpinyin-6046c7de7d8cc3e489f0e256f9f603520c5ddb1a.tar.xz
libpinyin-6046c7de7d8cc3e489f0e256f9f603520c5ddb1a.zip
fixes _remove_duplicated_items
-rw-r--r--src/pinyin.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index a3beaff..c65bd12 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -574,15 +574,17 @@ static void _append_items(pinyin_context_t * context,
static void _remove_duplicated_items(CandidateVector items) {
/* remove the duplicated items. */
- phrase_token_t last_token = null_token;
+ phrase_token_t last_token = null_token, saved_token;
for (size_t n = 0; n < items->len; ++n) {
lookup_candidate_t * item = &g_array_index
(items, lookup_candidate_t, n);
- if (last_token == item->m_token) {
+
+ saved_token = item->m_token;
+ if (last_token == saved_token) {
g_array_remove_index(items, n);
n--;
}
- last_token = item->m_token;
+ last_token = saved_token;
}
}
@@ -1045,7 +1047,8 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
found = _try_divided_table(instance, ranges, offset, items);
}
if (options & USE_RESPLIT_TABLE) {
- found = _try_resplit_table(instance, ranges, offset, items);
+ found = _try_resplit_table(instance, ranges, offset, items) ||
+ found;
}
}