summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-07-03 12:04:31 +0800
committerPeng Wu <alexepico@gmail.com>2012-07-03 12:04:31 +0800
commit088ee79c591f72f800a4ac5ac6d969b054b45027 (patch)
tree09e705034ae06aea79e96dbb77290fb454192c5e
parent74fdc84d5e6436339bd96d3be8a125d89e969041 (diff)
downloadlibpinyin-088ee79c591f72f800a4ac5ac6d969b054b45027.tar.gz
libpinyin-088ee79c591f72f800a4ac5ac6d969b054b45027.tar.xz
libpinyin-088ee79c591f72f800a4ac5ac6d969b054b45027.zip
fixes _prepend_sentence_candidate
-rw-r--r--src/pinyin.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index fbeeed1..96c2d33 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -901,9 +901,15 @@ static void _compute_frequency_of_items(pinyin_context_t * context,
}
}
-static bool _prepend_sentence_candidate(CandidateVector candidates) {
- /* prepend best match candidate to candidates. */
+static bool _prepend_sentence_candidate(pinyin_instance_t * instance,
+ CandidateVector candidates) {
+ /* check whether the best match candidate exists. */
+ gchar * sentence = NULL;
+ pinyin_get_sentence(instance, &sentence);
+ if (NULL == sentence)
+ return false;
+ /* prepend best match candidate to candidates. */
lookup_candidate_t candidate;
candidate.m_candidate_type = BEST_MATCH_CANDIDATE;
g_array_prepend_val(candidates, candidate);
@@ -1125,7 +1131,7 @@ bool pinyin_get_candidates(pinyin_instance_t * instance,
/* post process to remove duplicated candidates */
- _prepend_sentence_candidate(candidates);
+ _prepend_sentence_candidate(instance, candidates);
_compute_phrase_strings_of_items(instance, candidates);
@@ -1499,7 +1505,7 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
/* post process to remove duplicated candidates */
- _prepend_sentence_candidate(candidates);
+ _prepend_sentence_candidate(instance, candidates);
_compute_phrase_strings_of_items(instance, candidates);