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
This commit is contained in:
Yeongjong Lee 2019-04-26 14:55:37 +09:00 committed by SangHyeon Jade Lee
parent c006589607
commit 0921e4770e
1 changed files with 8 additions and 8 deletions

View File

@ -3659,7 +3659,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;
}
}
@ -3668,7 +3668,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;
}
}
@ -3681,7 +3681,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;
}
}
@ -3690,7 +3690,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;
}
}
@ -3705,7 +3705,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;
}
}
@ -3714,7 +3714,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;
}
}
@ -3726,7 +3726,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;
}
}
@ -3735,7 +3735,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;
}
}