From de9f0aff5764ff42368c0e5164d439aba19d4e0c Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Mon, 6 Nov 2017 11:06:41 +0900 Subject: [PATCH] edje: don't return negative width and height from _parts_extends Summary: It should return width and height with positive values or zero. @fix Test Plan: make check Reviewers: raster, jpeg, cedric Reviewed By: raster Subscribers: jiin.moon Differential Revision: https://phab.enlightenment.org/D5422 --- src/lib/edje/edje_util.c | 7 +++++-- src/tests/edje/edje_test_edje.c | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 8db4ffd9a3..1b772d4be7 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -3274,7 +3274,7 @@ EOLIAN Eina_Rectangle _edje_object_efl_canvas_layout_calc_calc_parts_extends(Eo *obj EINA_UNUSED, Edje *ed) { Evas_Coord xx1 = INT_MAX, yy1 = INT_MAX; - Evas_Coord xx2 = 0, yy2 = 0; + Evas_Coord xx2 = 0, yy2 = 0, w = 0, h = 0; unsigned short i; ed->calc_only = EINA_TRUE; @@ -3304,7 +3304,10 @@ _edje_object_efl_canvas_layout_calc_calc_parts_extends(Eo *obj EINA_UNUSED, Edje ed->calc_only = EINA_FALSE; - return (Eina_Rectangle) { xx1, yy1, xx2 - xx1, yy2 - yy1 }; + if ((xx2 - xx1) > 0) w = xx2 - xx1; + if ((yy2 - yy1) > 0) h = yy2 - yy1; + + return (Eina_Rectangle) { xx1, yy1, w, h }; } EOLIAN Eina_Size2D diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index c47dccb693..3ea0a34acf 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -151,8 +151,14 @@ START_TEST(edje_test_calculate_parens) int x, y, w, h; Evas *evas = EDJE_TEST_INIT_EVAS(); Evas_Object *obj; + Eina_Rect rect; obj = edje_object_add(evas); + + /* A negative test case for efl_canvas_layout_calc_parts_extends */ + rect = efl_canvas_layout_calc_parts_extends(obj); + fail_if(rect.w < 0 || rect.h < 0); + fail_unless(edje_object_file_set(obj, test_layout_get("test_parens.edj"), "test_group")); evas_object_resize(obj, 100, 100);