Summary:
add null check in _style_match_tag()
if evas_object_textblock_text_markup_set() is called with markup text before setting style,
segmentation fault is occurred in _style_match_tag()
@fix
Test Plan:
Insert this situation to test suite
-> test id : evas_textblock_simple
Test for without this patch:
1. apply patch just "src/tests/evas/evas_test_textblock.c" partially.
2. $make check
Test for with this patch:
1. apply this patch completely (2 files)
2. $make check
Reviewers: id213sin, herdsman
Subscribers: Blackmole, cedric, jpeg
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D3818
Change-Id: I5dc72d755b62a03a1ec0fac89e52ae59cee9dcb6
Evas_Object_Style_Tag *tag;
/* Try the style tags */
- EINA_INLIST_FOREACH(ts->tags, tag)
+ if (ts)
{
- if (tag->tag.tag_len != tag_len) continue;
- if (!strncmp(tag->tag.tag, s, tag_len))
+ EINA_INLIST_FOREACH(ts->tags, tag)
{
- *replace_len = tag->tag.replace_len;
- return tag->tag.replace;
+ if (tag->tag.tag_len != tag_len) continue;
+ if (!strncmp(tag->tag.tag, s, tag_len))
+ {
+ *replace_len = tag->tag.replace_len;
+ return tag->tag.replace;
+ }
}
}
const char *buf = "Th<i>i</i>s is a <br/> te<b>s</b>t.";
evas_object_textblock_text_markup_set(tb, buf);
fail_if(strcmp(evas_object_textblock_text_markup_get(tb), buf));
+
+ /* Set markup text(includes tag) without setting style */
+ Evas_Object *tb2 = evas_object_textblock_add(evas);
+ fail_if(!tb2);
+ evas_object_textblock_text_markup_set(tb2, buf);
+ ck_assert("Crash Not occurred");
+ evas_object_del(tb2);
+
END_TB_TEST();
}
END_TEST