rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=97d69a23f49107a1b5f869198a298a0c6801aa60
commit 97d69a23f49107a1b5f869198a298a0c6801aa60 Author: Mykyta Biliavskyi <m.biliavs...@samsung.com> Date: Mon Jul 18 18:53:28 2016 +0300 Project navigator: delete aliasses before delete main group. In case when main group deleted before aliasses broke links to the aliased groups. As result segfault on saving stage. @fix T4075 --- src/bin/ui/project_navigator.c | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/bin/ui/project_navigator.c b/src/bin/ui/project_navigator.c index 43d171f..a8da47a 100644 --- a/src/bin/ui/project_navigator.c +++ b/src/bin/ui/project_navigator.c @@ -566,25 +566,41 @@ _folder_del(const char *prefix) { Eina_List *folders = NULL, *groups = NULL; Eina_Stringshare *tmp, *msg; - Group *group; + Group *group, *alias; _tree_items_get(prefix, &folders, &groups); EINA_LIST_FREE(folders, tmp) { _folder_del(tmp); } + EINA_LIST_FREE(groups, group) { - tmp = eina_stringshare_add(group->name); - if (editor_group_del(ap.project->global_object, tmp)) - gm_group_del(ap.project, group); - else - { - msg = eina_stringshare_printf(_("Can't delete layout \"%s\""), group->name); - popup_want_action(_("Error"), msg, NULL, BTN_OK, NULL, NULL); - eina_stringshare_del(msg); - } - eina_stringshare_del(tmp); + if (group->main_group) continue; + EINA_LIST_FREE(group->aliases, alias) + { + tmp = eina_stringshare_add(alias->name); + if (editor_group_del(ap.project->global_object, tmp)) + gm_group_del(ap.project, alias); + else + { + msg = eina_stringshare_printf(_("Can't delete alias layout \"%s\""), alias->name); + popup_want_action(_("Error"), msg, NULL, BTN_OK, NULL, NULL); + eina_stringshare_del(msg); + } + eina_stringshare_del(tmp); + } + + tmp = eina_stringshare_add(group->name); + if (editor_group_del(ap.project->global_object, tmp)) + gm_group_del(ap.project, group); + else + { + msg = eina_stringshare_printf(_("Can't delete layout \"%s\""), group->name); + popup_want_action(_("Error"), msg, NULL, BTN_OK, NULL, NULL); + eina_stringshare_del(msg); + } + eina_stringshare_del(tmp); } } --