zmike pushed a commit to branch efl-1.22.

http://git.enlightenment.org/core/efl.git/commit/?id=4c89d5021b8b11a8c6a2ea43455f46cdbd33ffae

commit 4c89d5021b8b11a8c6a2ea43455f46cdbd33ffae
Author: Yeongjong Lee <[email protected]>
Date:   Fri Apr 26 14:55:37 2019 +0900

    edje_calc: replace eina_stringshare_ref with eina_stringshare_add
    
    Summary:
    When there is circular dependency in edc, a bunch of CRI log is printed.
    This patch fixes it.
    ```
    ERR<10159>:edje lib/edje/edje_calc.c:3919 _edje_part_recalc() Circular 
dependency in the group 'test' : longpartname -> longpartname -> longpartname2
    ERR<10159>:edje lib/edje/edje_calc.c:3896 _edje_part_recalc() Circular 
dependency when calculating part "longpartname". Already calculating XY [03] 
axes. Need to calculate Y [02] axes
    CRI<10159>: lib/eina/eina_share_common.c:559 
_eina_share_common_node_from_str() *** Eina Magic Check Failed at 
0x7fb7c93ebf60 !!!
        Input handle is wrong type.
        Expected: 98761254 - Eina Stringshare Node
        Supplied: 2f736e6f - (unknown)
    
    CRI<10159>: lib/eina/eina_share_common.c:559 
_eina_share_common_node_from_str() *** Eina Magic Check Failed at 
0x7fb7c93ec5d1 !!!
        Input handle is wrong type.
        Expected: 98761254 - Eina Stringshare Node
        Supplied: 5f747261 - (unknown)
    ```
    If string is already stored, `eina_stringshare_add` increase its reference 
count.
    
    Test Plan:
    test.c
    ```
    //edje_cc test.edc && gcc -o test test.c `pkg-config --libs --cflags 
elementary`
    #include <Elementary.h>
    
    int main(int argc, char **argv)
    {
       elm_init(argc, argv);
    
       Evas_Object *win = elm_win_util_standard_add("test", "test");
    
       Evas_Object *layout = elm_layout_add(win);
       elm_layout_file_set(layout, "./test.edj", "test");
       elm_win_resize_object_add(win, layout);
       evas_object_show(layout);
       evas_object_resize(win, 200, 200);
       evas_object_show(win);
    
       elm_run();
    
       elm_shutdown();
    
       return 0;
    }
    ```
    
    test.edc
    ```
    collections {
       group { name: "test";
          parts {
             rect { name: "longpartname";
                desc { "default";
                    rel1.to: "longpartname2";
                }
             }
             rect { name: "longpartname2";
                type: RECT;
                desc { "default";
                    rel2.to: "longpartname";
                }
             }
          }
       }
    }
    ```
    
    Reviewers: SanghyeonLee, zmike
    
    Reviewed By: SanghyeonLee
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D8717
---
 src/lib/edje/edje_calc.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 3e3bf29850..ea64b867c6 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -3676,7 +3676,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param1.description->rel1.id_x];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3685,7 +3685,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param1.description->rel2.id_x];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3698,7 +3698,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param2->description->rel1.id_x];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3707,7 +3707,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param2->description->rel2.id_x];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3722,7 +3722,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param1.description->rel1.id_y];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3731,7 +3731,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param1.description->rel2.id_y];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3743,7 +3743,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param2->description->rel1.id_y];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }
@@ -3752,7 +3752,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, 
Edje_Real_Part *cep, Ein
                   rp = ed->table_parts[cep->param2->description->rel2.id_y];
                   if (_circular_dependency_find(ed, ep, rp, arr))
                     {
-                       eina_array_push(arr, 
eina_stringshare_ref(rp->part->name));
+                       eina_array_push(arr, 
eina_stringshare_add(rp->part->name));
                        return EINA_TRUE;
                     }
                }

-- 


Reply via email to