forked from enlightenment/efl
evas_textblock: prevent segfault if there are no style
``` #include <Elementary.h> EAPI_MAIN int elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { Evas_Object *win, *textblock; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_util_standard_add("", ""); elm_win_autodel_set(win, EINA_TRUE); textblock = evas_object_textblock_add(win); evas_object_resize(textblock, 360, 360); evas_object_show(textblock); evas_object_textblock_text_markup_set(textblock, "<b>b</b>"); evas_object_resize(win, 360, 360); evas_object_show(win); elm_run(); return 0; } ELM_MAIN() ``` this application will crash. Any font format specified in text, if there are now style will cause the crash. Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D11686
This commit is contained in:
parent
bc52776fd6
commit
7ac765c71b
|
@ -187,6 +187,9 @@ evas_font_set_get(const char *name)
|
|||
Eina_List *fonts = NULL;
|
||||
char *p;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
|
||||
if (!*name) return NULL;
|
||||
|
||||
p = strchr(name, ',');
|
||||
if (!p)
|
||||
{
|
||||
|
|
|
@ -3772,6 +3772,22 @@ EFL_START_TEST(evas_textblock_style)
|
|||
}
|
||||
EFL_END_TEST
|
||||
|
||||
/* Textblock functionality without style. */
|
||||
EFL_START_TEST(evas_textblock_style_empty)
|
||||
{
|
||||
Evas *evas;
|
||||
Evas_Object *txt;
|
||||
Evas_Coord w, h;
|
||||
evas = EVAS_TEST_INIT_EVAS();
|
||||
txt = evas_object_textblock_add(evas);
|
||||
evas_object_textblock_text_markup_set(txt, "<b></b>");
|
||||
evas_object_textblock_size_formatted_get(txt, &w, &h);
|
||||
ck_assert_int_eq(w, 0);
|
||||
ck_assert_int_eq(h, 0);
|
||||
evas_free(evas);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
/* Basic test for style user push/peek/pop. */
|
||||
EFL_START_TEST(evas_textblock_style_user)
|
||||
{
|
||||
|
@ -5045,6 +5061,7 @@ void evas_test_textblock(TCase *tc)
|
|||
tcase_add_test(tc, evas_textblock_size);
|
||||
tcase_add_test(tc, evas_textblock_editing);
|
||||
tcase_add_test(tc, evas_textblock_style);
|
||||
tcase_add_test(tc, evas_textblock_style_empty);
|
||||
tcase_add_test(tc, evas_textblock_style_user);
|
||||
tcase_add_test(tc, evas_textblock_evas);
|
||||
tcase_add_test(tc, evas_textblock_text_getters);
|
||||
|
|
Loading…
Reference in New Issue