From fdbc477f7990f78f69144a26d5990e35057b3317 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 25 Jun 2013 16:37:48 +0100 Subject: [PATCH] Evas textblock: Fixed issue with textblocks without fonts segfaulting. Fixes T184 (which is a regression). --- ChangeLog | 5 +++++ NEWS | 2 +- src/lib/evas/canvas/evas_object_textblock.c | 5 +++++ src/tests/evas/evas_test_textblock.c | 7 +++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 38c2abe92f..ce224f9e43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-06-25 Tom Hacohen + + * Evas textblock: Fixed issue with textblocks without fonts + segfaulting. + 2013-06-24 Cedric Bail * Evas: add support for asynchronously uploading GL texture. diff --git a/NEWS b/NEWS index 228e5277e5..f5afb226a7 100644 --- a/NEWS +++ b/NEWS @@ -339,4 +339,4 @@ Fixes: * Evas: Fix gif cannot decode alpha value correctly. * Evas: Fix bs if app call image object update add after call api like fileset. * Evas: Fix evas_gl direct rendering to support partial redraw. - + * Evas textblock: Fixed issue with textblocks without fonts segfaulting. diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 4ac813dff0..88d1fa4f9e 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -2550,6 +2550,11 @@ _layout_item_ascent_descent_adjust(const Evas_Object *eo_obj, Evas_Coord *maxascent, Evas_Coord *maxdescent, Evas_Object_Textblock_Item *it, Textblock_Position position) { + if (!it->format || !it->format->font.font) + { + return; + } + _layout_format_ascent_descent_adjust(eo_obj, maxascent, maxdescent, it->format); if ((it->type == EVAS_TEXTBLOCK_ITEM_TEXT) && diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index ca6644daaf..03332b497d 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -2484,6 +2484,13 @@ START_TEST(evas_textblock_style) evas_object_textblock_style_insets_get(tb, &l, &r, &t, &b); fail_if((l != 1) || (r != 4) || (t != 1) || (b != 4)); + /* No font */ + evas_textblock_style_set(newst, "DEFAULT=''"); + evas_object_textblock_text_markup_set(tb, "Test"); + evas_object_textblock_size_formatted_get(tb, &nw, &nh); + ck_assert_int_eq(nw, 0); + ck_assert_int_eq(nw, nh); + END_TB_TEST(); } END_TEST