From f85eedf9c5fc0f1798888fb6b91c346c65037d8c Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 7 Nov 2006 23:50:59 +0000 Subject: Don't index vis2log_map[] with a negative value. Fixes #368972. 2006-11-08 Behdad Esfahbod * pango/pango-layout.c (pango_layout_move_cursor_visually): Don't index vis2log_map[] with a negative value. Fixes #368972. --- ChangeLog | 5 +++++ pango/pango-layout.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a51e7f0..5789fecb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-11-08 Behdad Esfahbod + + * pango/pango-layout.c (pango_layout_move_cursor_visually): Don't + index vis2log_map[] with a negative value. Fixes #368972. + 2006-10-24 Behdad Esfahbod * examples/Makefile.am (cairosimple_LDADD): Do not require pangoft2 diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 44657180..420b42e2 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -1371,7 +1371,7 @@ pango_layout_move_cursor_visually (PangoLayout *layout, int *log2vis_map; int *vis2log_map; int n_vis; - int vis_pos, log_pos; + int vis_pos, vis_pos_old, log_pos; int start_offset; gboolean off_start = FALSE; gboolean off_end = FALSE; @@ -1465,14 +1465,15 @@ pango_layout_move_cursor_visually (PangoLayout *layout, vis2log_map = pango_layout_line_get_vis2log_map (line, strong); + vis_pos_old = vis_pos + (direction > 0 ? 1 : -1); log_pos = g_utf8_pointer_to_offset (layout->text + line->start_index, - layout->text + line->start_index + vis2log_map[vis_pos]); + layout->text + line->start_index + vis2log_map[vis_pos_old]); do { - int vis_pos_old = vis_pos; vis_pos += direction > 0 ? 1 : -1; log_pos += g_utf8_pointer_to_offset (layout->text + line->start_index + vis2log_map[vis_pos_old], layout->text + line->start_index + vis2log_map[vis_pos]); + vis_pos_old = vis_pos; } while (vis_pos > 0 && vis_pos < n_vis && !layout->log_attrs[start_offset + log_pos].is_cursor_position); -- cgit v1.2.1