diff options
author | Peng Wu <alexepico@gmail.com> | 2018-06-07 17:52:12 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2018-06-07 17:52:12 +0800 |
commit | 184a264f3eb4436ff2377b7db498cd321a339393 (patch) | |
tree | 0a1f4d0f5f4284f4185c5843a1b450032ebee31c /src/PYPTradCandidates.cc | |
parent | 24cd9ed4274d9a7a7a25862537d08b8e83be30bf (diff) | |
download | ibus-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.cc | 10 |
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; } |