summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-07-04 13:21:42 +0800
committerPeng Wu <alexepico@gmail.com>2012-07-04 13:21:42 +0800
commitf9f1575a983f184dd84b137d4b8d5ce3a35c063d (patch)
tree1313e6f1f1b95c0985490e3e42ae59d7aa5eb089
parentf0fbf87fb1625bb8f8e362af3e1b4b3b20f67743 (diff)
downloadlibpinyin-f9f1575a983f184dd84b137d4b8d5ce3a35c063d.tar.gz
libpinyin-f9f1575a983f184dd84b137d4b8d5ce3a35c063d.tar.xz
libpinyin-f9f1575a983f184dd84b137d4b8d5ce3a35c063d.zip
fixes _compute_phrase_strings_of_items
-rw-r--r--src/pinyin.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index 96c2d33..12a4b8d 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -918,6 +918,7 @@ static bool _prepend_sentence_candidate(pinyin_instance_t * instance,
}
static bool _compute_phrase_strings_of_items(pinyin_instance_t * instance,
+ size_t offset,
CandidateVector candidates) {
/* populate m_phrase_string in lookup_candidate_t. */
@@ -926,9 +927,14 @@ static bool _compute_phrase_strings_of_items(pinyin_instance_t * instance,
(candidates, lookup_candidate_t, i);
switch(candidate->m_candidate_type) {
- case BEST_MATCH_CANDIDATE:
- pinyin_get_sentence(instance, &(candidate->m_phrase_string));
+ case BEST_MATCH_CANDIDATE: {
+ gchar * sentence = NULL;
+ pinyin_get_sentence(instance, &sentence);
+ candidate->m_phrase_string = g_strdup
+ (g_utf8_offset_to_pointer(sentence, offset));
+ g_free(sentence);
break;
+ }
case NORMAL_CANDIDATE:
case DIVIDED_CANDIDATE:
case RESPLIT_CANDIDATE:
@@ -1133,7 +1139,7 @@ bool pinyin_get_candidates(pinyin_instance_t * instance,
_prepend_sentence_candidate(instance, candidates);
- _compute_phrase_strings_of_items(instance, candidates);
+ _compute_phrase_strings_of_items(instance, offset, candidates);
_remove_duplicated_items_by_phrase_string(instance, candidates);
@@ -1507,7 +1513,7 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
_prepend_sentence_candidate(instance, candidates);
- _compute_phrase_strings_of_items(instance, candidates);
+ _compute_phrase_strings_of_items(instance, offset, candidates);
_remove_duplicated_items_by_phrase_string(instance, candidates);