fix an infinite recursion bug and related crash in elm_box_recalculate
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 5 Dec 2011 02:57:40 +0000 (02:57 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 5 Dec 2011 02:57:40 +0000 (02:57 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@65880 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_box.c

index fc97788..a3005f8 100644 (file)
@@ -20,6 +20,7 @@ struct _Widget_Data
    Evas_Object *box;
    Eina_Bool horizontal:1;
    Eina_Bool homogeneous:1;
+   Eina_Bool recalc:1;
 };
 
 struct _Elm_Box_Transition
@@ -674,7 +675,9 @@ elm_box_recalculate(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if ((!wd) || (wd->recalc)) return;
    evas_object_smart_need_recalculate_set(wd->box, EINA_TRUE);
+   wd->recalc++;
    evas_object_smart_calculate(wd->box);
+   wd->recalc--;
 }