tasn pushed a commit to branch efl-1.10.

http://git.enlightenment.org/core/efl.git/commit/?id=ebefec258521a1683dd5667e487be45c12cf5db1

commit ebefec258521a1683dd5667e487be45c12cf5db1
Author: Tom Hacohen <t...@stosb.com>
Date:   Wed Jun 4 10:14:24 2014 +0100

    Evas textblock: Fix crash when cutting ligatures with formats.
    
    "f<color=#f00>i</color>f" could cause textblock to crash. It doesn't
    crash anymore. It doesn't render the colours correctly either, but at
    least this is the first step.
    
    This is the start of fixing T1308
    
    @fix
---
 src/lib/evas/common/evas_text_utils.c | 4 ++++
 src/tests/evas/evas_test_textblock.c  | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/src/lib/evas/common/evas_text_utils.c 
b/src/lib/evas/common/evas_text_utils.c
index 2b43695..dc2407f 100644
--- a/src/lib/evas/common/evas_text_utils.c
+++ b/src/lib/evas/common/evas_text_utils.c
@@ -180,6 +180,10 @@ evas_common_text_props_index_find(const Evas_Text_Props 
*props, int _cutoff)
    int max = props->len - 1;
    int mid;
 
+   /* Props can be empty, verify they are not before going on. */
+   if (!props->info)
+      return -1;
+
    _cutoff += props->text_offset;
    ot_info = props->info->ot + props->start;
    /* Should get us closer to the right place. */
diff --git a/src/tests/evas/evas_test_textblock.c 
b/src/tests/evas/evas_test_textblock.c
index 8b23393..31d4c0c 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -2577,6 +2577,9 @@ START_TEST(evas_textblock_formats)
    evas_object_textblock_text_markup_prepend(cur, "<b></b>");
    ck_assert_str_eq(evas_object_textblock_text_markup_get(tb), 
"ab<b></b>c<br/>def");
 
+   /* Ligatures cut by formats */
+   evas_object_textblock_text_markup_set(tb, "f<color=#f00>i</color>f");
+   evas_object_textblock_size_formatted_get(tb, NULL, NULL);
 
    END_TB_TEST();
 }

-- 


Reply via email to