From 3e535c00ce69ac17fd13e7ac91e0405f49381a36 Mon Sep 17 00:00:00 2001 From: tasn Date: Sun, 30 Jan 2011 10:35:50 +0000 Subject: [PATCH] Evas textblock: Fixed a small invalid read. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@56448 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/canvas/evas_object_textblock.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c index f29d0e5..a403117 100644 --- a/src/lib/canvas/evas_object_textblock.c +++ b/src/lib/canvas/evas_object_textblock.c @@ -6777,12 +6777,23 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord if (dir && dir_cur && dir_cur->node) { #ifdef BIDI_SUPPORT - *dir = (evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0, - dir_cur->pos)) ? - EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR; -#else - *dir = EVAS_BIDI_DIRECTION_LTR; + if (_evas_textblock_cursor_is_at_the_end(dir_cur) && (dir_cur->pos > 0)) + { + *dir = (evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0, + dir_cur->pos - 1)) ? + EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR; + } + else if (dir_cur->pos > 0) + { + *dir = (evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0, + dir_cur->pos)) ? + EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR; + } + else #endif + { + *dir = EVAS_BIDI_DIRECTION_LTR; + } } return ret; } -- 2.7.4