From cf083720b61b59e333593c60c098bc34368a2c9d Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Sun, 30 Jan 2011 10:35:50 +0000 Subject: [PATCH] Evas textblock: Fixed a small invalid read. SVN revision: 56448 --- .../src/lib/canvas/evas_object_textblock.c | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_object_textblock.c b/legacy/evas/src/lib/canvas/evas_object_textblock.c index f29d0e5f5f..a403117a4e 100644 --- a/legacy/evas/src/lib/canvas/evas_object_textblock.c +++ b/legacy/evas/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; }