rimmed pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=164d81f12455715001bf0f3af4805dd66a16ce90

commit 164d81f12455715001bf0f3af4805dd66a16ce90
Author: Vyacheslav Reutskiy <[email protected]>
Date:   Tue Aug 9 10:17:31 2016 +0300

    edje_pick: don't copy dependencies group if they in the import list
    
    If a dependence group in the import list - don't copy it as dependence,
    it make group duplicate and make a recurcive load.
    
    @fix
    Fixes T4313
---
 src/bin/edje/edje_pick.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/bin/edje/edje_pick.c b/src/bin/edje/edje_pick.c
index c89950b..4082291 100644
--- a/src/bin/edje/edje_pick.c
+++ b/src/bin/edje/edje_pick.c
@@ -564,7 +564,7 @@ _edje_pick_output_prepare(Edje_File *o, Edje_File *edf, 
char *name)
 }
 
 static Eina_List *
-_edje_pick_header_dependencies_check(Edje_File *out_file, Edje_File *edf, 
Edje_Part_Collection_Directory_Entry *ce, int *current_id)
+_edje_pick_header_dependencies_check(Edje_File *out_file, Edje_File *edf, 
Eina_List *groups, Edje_Part_Collection_Directory_Entry *ce, int *current_id)
 {
    char buf[1024];
    Edje_Part_Collection *edc;
@@ -582,11 +582,12 @@ _edje_pick_header_dependencies_check(Edje_File *out_file, 
Edje_File *edf, Edje_P
    if (!edc)
      {
         EINA_LOG_ERR("Failed to read group <%s> id <%d>\n", ce->entry, ce->id);
-        return dep_list;
+        goto exit;
      }
 #define GROUP_CHECK_AND_ADD(NAME) \
    if (NAME) \
      { \
+        if (eina_list_search_unsorted(groups, (void *)strcmp, NAME)) goto 
exit; \
         ce_cor = eina_hash_find(edf->collection, NAME); \
         if ((ce_cor) && (!eina_hash_find(out_file->collection, NAME))) \
           { \
@@ -617,6 +618,7 @@ _edje_pick_header_dependencies_check(Edje_File *out_file, 
Edje_File *edf, Edje_P
           }
      }
 
+exit:
    edje_cache_emp_free(ce);
    return dep_list;
 #undef GROUP_CHECK_AND_ADD
@@ -734,7 +736,7 @@ _edje_pick_header_make(Edje_File *out_file , Edje_File 
*edf, Eina_List *ifs)
 
                   eina_hash_direct_add(out_file->collection,ce_out->entry,
                         ce_out);
-                  dep_list = _edje_pick_header_dependencies_check(out_file, 
edf, ce, &current_group_id);
+                  dep_list = _edje_pick_header_dependencies_check(out_file, 
edf, context.current_file->groups, ce, &current_group_id);
                   if (!deps) deps = dep_list;
                   else deps = eina_list_merge(deps, dep_list);
                }

-- 


Reply via email to