stefan pushed a commit to branch master.

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

commit 3bd066c7dbffc2655501dea0b8d44d567ac1113b
Author: Ali Alzyod <ali198...@gmail.com>
Date:   Mon Sep 14 16:30:06 2020 +0000

    evas_textblock: prevent textnodes with <ps>/<br> without format node
    
    this will prevent textnodes content with <ps> or <br> without format node
    
    Reviewed-by: Stefan Schmidt <ste...@datenfreihafen.org>
    Differential Revision: https://phab.enlightenment.org/D12145
---
 src/lib/evas/canvas/evas_object_textblock.c |  3 +++
 src/tests/elementary/elm_test_entry.c       | 23 +++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 5d1c476466..501e12ba78 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -11055,6 +11055,9 @@ 
_evas_textblock_node_text_adjust_offsets_to_start(Efl_Canvas_Textblock_Data *o,
    size_t pos = 0;
    int orig_end;
 
+   if ((start == 0) && (end == 0))
+     return EINA_FALSE;
+
    itr = n->format_node;
    if (!itr || (itr->text_node != n)) return EINA_FALSE;
 
diff --git a/src/tests/elementary/elm_test_entry.c 
b/src/tests/elementary/elm_test_entry.c
index 5df40b19ec..85ada68a49 100644
--- a/src/tests/elementary/elm_test_entry.c
+++ b/src/tests/elementary/elm_test_entry.c
@@ -653,6 +653,28 @@ EFL_START_TEST(elm_entry_keycode)
 }
 EFL_END_TEST
 
+EFL_START_TEST(elm_entry_textnodes_with_no_format)
+{
+   Evas_Object *win, *entry;
+
+   win = win_add(NULL, "entry", ELM_WIN_BASIC);
+   entry = elm_entry_add(win);
+   evas_object_show(entry);
+
+   elm_entry_entry_set(entry, "<br/><br/>");
+   Evas_Object *tb = elm_entry_textblock_get(entry);
+   Evas_Textblock_Cursor *c1 = evas_object_textblock_cursor_new(tb);
+   Evas_Textblock_Cursor *c2 = evas_object_textblock_cursor_new(tb);
+   evas_textblock_cursor_char_next(c2);
+   evas_textblock_cursor_range_delete(c1, c2);
+   elm_entry_cursor_pos_set(entry, 0);
+   ck_assert(elm_entry_cursor_down(entry));
+
+   evas_object_del(entry);
+   evas_object_del(win);
+}
+EFL_END_TEST
+
 void elm_test_entry(TCase *tc)
 {
    tcase_add_test(tc, elm_entry_legacy_type_check);
@@ -674,4 +696,5 @@ void elm_test_entry(TCase *tc)
    tcase_add_test(tc, elm_entry_test_text_class);
    tcase_add_test(tc, elm_entry_test_burmese);
    tcase_add_test(tc, elm_entry_keycode);
+   tcase_add_test(tc, elm_entry_textnodes_with_no_format);
 }

-- 


Reply via email to