jackdanielz pushed a commit to branch master. http://git.enlightenment.org/tools/erigo.git/commit/?id=a42164e7fdfe85f95f9aa4d2d796655dd92038f1
commit a42164e7fdfe85f95f9aa4d2d796655dd92038f1 Author: Daniel Zaoui <daniel.za...@samsung.com> Date: Thu Nov 5 09:43:54 2015 +0200 Fix JSON parsing when dummy objects are involved Scenario: naviframe (full of dummies) child of window but not contained. Result: crash. A frame is inserted into a grid when evases are different. During parsing, the orphans checker was not walking over the children (just the contained objects). Dummy objects present in the naviframe remained orphans. This patch adds a children checker during the orphans check. --- src/lib/gui_widget.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/gui_widget.c b/src/lib/gui_widget.c index 890068b..cc10c93 100644 --- a/src/lib/gui_widget.c +++ b/src/lib/gui_widget.c @@ -1502,13 +1502,21 @@ wdg_orphans_check(Gui_Widget *wdg) { Gui_Context *ctx = (Gui_Context *)wdg_context_get(wdg); const char *wdg_name = wdg_name_get(wdg); - const Eina_List *contents = wdg_obj_container_contents_list_get(wdg), *itr; + const Eina_List *contents, *itr; Object_Container_Item *ci; + Eid *child_id; + contents = wdg_children_list_get(wdg); + EINA_LIST_FOREACH(contents, itr, child_id) + { + Gui_Widget *child = wdg_get(child_id); + wdg_orphans_check(child); + } + contents = wdg_obj_container_contents_list_get(wdg); EINA_LIST_FOREACH(contents, itr, ci) { Eina_List *itr2; Gui_Value *val; - Eid *child_id = obj_container_item_eid_get(ci); + child_id = obj_container_item_eid_get(ci); Gui_Widget *child = wdg_get(child_id); wdg_orphans_check(child); if (child && !wdg_parent_get(child)) @@ -1544,7 +1552,7 @@ wdg_orphans_check(Gui_Widget *wdg) { if (gui_value_type_get(val) == GUI_TYPE_OBJECT) { - Eid *child_id = EID_ID_GET(val); + child_id = EID_ID_GET(val); if (!child_id) continue; Gui_Widget *child = wdg_get(child_id); wdg_orphans_check(child); --