summaryrefslogtreecommitdiffstats
path: root/src/PYPTradCandidates.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2018-06-07 17:52:12 +0800
committerPeng Wu <alexepico@gmail.com>2018-06-07 17:52:12 +0800
commit184a264f3eb4436ff2377b7db498cd321a339393 (patch)
tree0a1f4d0f5f4284f4185c5843a1b450032ebee31c /src/PYPTradCandidates.cc
parent24cd9ed4274d9a7a7a25862537d08b8e83be30bf (diff)
downloadibus-libpinyin-184a264f3eb4436ff2377b7db498cd321a339393.tar.gz
ibus-libpinyin-184a264f3eb4436ff2377b7db498cd321a339393.tar.xz
ibus-libpinyin-184a264f3eb4436ff2377b7db498cd321a339393.zip
fixes crash
Diffstat (limited to 'src/PYPTradCandidates.cc')
-rw-r--r--src/PYPTradCandidates.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/PYPTradCandidates.cc b/src/PYPTradCandidates.cc
index 6442783..d651168 100644
--- a/src/PYPTradCandidates.cc
+++ b/src/PYPTradCandidates.cc
@@ -52,15 +52,19 @@ TraditionalCandidates::processCandidates (std::vector<EnhancedCandidate> & candi
SelectCandidateAction
TraditionalCandidates::selectCandidate (EnhancedCandidate & enhanced)
{
+ guint id = enhanced.m_candidate_id;
assert (CANDIDATE_TRADITIONAL_CHINESE == enhanced.m_candidate_type);
- SelectCandidateAction action = SELECT_CANDIDATE_ALREADY_HANDLED;
+ if (G_UNLIKELY (id >= m_candidates.size ()))
+ return SELECT_CANDIDATE_ALREADY_HANDLED;
- action = m_editor->selectCandidateInternal (enhanced);
+ SelectCandidateAction action = SELECT_CANDIDATE_ALREADY_HANDLED;
+ action = m_editor->selectCandidateInternal (m_candidates[id]);
if (SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT == action) {
String trad;
- SimpTradConverter::simpToTrad (enhanced.m_display_string.c_str (), trad);
+ SimpTradConverter::simpToTrad
+ (m_candidates[id].m_display_string.c_str (), trad);
enhanced.m_display_string = trad;
}