diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index fead840163..970e2d82b6 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -4058,10 +4058,11 @@ _edje_object_parts_extends_calc(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord *x, Ev EOLIAN void _edje_object_size_min_restricted_calc(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh) { - const int MIN_LIMIT = 4000; + const int CALC_COUNT_LIMIT = 255; Evas_Coord orig_w, orig_h; //original edje size int max_over_w, max_over_h; //maximum over-calculated size. + int calc_count = 0; Eina_Bool repeat_w, repeat_h; Eina_Bool reset_max = EINA_TRUE; Edje_Real_Part *pep = NULL; @@ -4092,6 +4093,8 @@ again: { unsigned int i; + calc_count++; + repeat_w = EINA_FALSE; repeat_h = EINA_FALSE; ed->dirty = EINA_TRUE; @@ -4181,7 +4184,7 @@ again: if (ed->h < restrictedh) ed->h = restrictedh; } - if ((ed->w > MIN_LIMIT) || (ed->h > MIN_LIMIT)) + if (reset_max && (calc_count > CALC_COUNT_LIMIT)) { /* Only print it if we have a non-fixed textblock. * We should possibly avoid all of this if in this case, but in @@ -4192,16 +4195,12 @@ again: ERR("file %s, group %s has a non-fixed part '%s'. Adding 'fixed: 1 1;' to source EDC may help. Continuing discarding faulty part.", ed->path, ed->group, pep->part->name); else - ERR("file %s, group %s overflowed %dx%d with minimum size of %dx%d. Continuing discarding faulty parts.", - ed->path, ed->group, MIN_LIMIT, MIN_LIMIT, - ed->w, ed->h); + ERR("file %s, group %s runs infinite minimum calculation loops.Continuing discarding faulty parts.", + ed->path, ed->group); } - if (reset_max) - { - reset_max = EINA_FALSE; - goto again; - } + reset_max = EINA_FALSE; + goto again; } } while (repeat_w || repeat_h);