fixes getCursorLeftByWord
authorPeng Wu <alexepico@gmail.com>
Fri, 3 Aug 2012 03:11:27 +0000 (11:11 +0800)
committerPeng Wu <alexepico@gmail.com>
Fri, 3 Aug 2012 03:11:27 +0000 (11:11 +0800)
src/PYPPhoneticEditor.cc

index b89db91..1cc3306 100644 (file)
@@ -483,9 +483,17 @@ LibPinyinPhoneticEditor::getCursorLeftByWord (void)
     } else {
         PinyinKeyPosVector & pinyin_poses = m_instance->m_pinyin_key_rests;
         guint pinyin_cursor = getPinyinCursor ();
-        PinyinKeyPos *pos = &g_array_index
-            (pinyin_poses, PinyinKeyPos, pinyin_cursor);
-        cursor = pos->m_raw_begin;
+
+        PinyinKeyPos *pos = NULL;
+
+        if (pinyin_cursor < pinyin_poses->len) {
+            pos = &g_array_index
+                (pinyin_poses, PinyinKeyPos, pinyin_cursor);
+            cursor = pos->m_raw_begin;
+        } else {
+            /* at the end of pinyin string. */
+            cursor  = m_cursor;
+        }
 
         /* cursor at the begin of one pinyin */
         g_return_val_if_fail (pinyin_cursor > 0, 0);