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);
      }
 }
 

-- 


Reply via email to