I reviewed the code right before and found that was incorrect. Fixed. commit 9560669f925cfd875c80cc212b32c6d1499d0e78
Thanks you for catching it. :) ------------------------------------ -Regards, Hermet- -----Original Message----- From: "daniel.za...@samsung.com"<daniel.zaoui>@samsung.com> To: <hermet>@hermet.pe.kr>; Cc: Sent: 2013-07-23 (화) 00:12:23 Subject: Fwd: Re: [E-devel] [EGIT] [core/elementary] master 01/01: elementary/widget - use eina_inlist in transate data to improve memory access / allocations. FYI -------- Original Message -------- Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: elementary/widget - use eina_inlist in transate data to improve memory access / allocations. Date: Mon, 22 Jul 2013 17:30:20 +0300 From: daniel.za...@samsung.com <daniel.zaoui>@samsung.com> Reply-To: Enlightenment developer list <enlightenment-devel>@lists.sourceforge.net> To: enlightenment-devel@lists.sourceforge.net CC: ChunEon Park - Enlightenment Git <no-reply>@enlightenment.org> Hi Hermet,I have an issue with that commit. In Tizen, I am almost sure it sigsegvs because of the change from list to inlist. In _translate_string_data_get, ts = NULL is done before the it->next of the loop. I say I am almost sure because gdb gives me a ts not NULL and sigsegvs on the line before, on the comparison that is false.Can you check that, please?By the way, if setting to NULL is used to exit and break too, do you know why we need the comparison? It is really weird for me. I supposed I missed something here.Thank youJackDanielZ, alias DanielOn 07/17/2013 09:06 AM, ChunEon Park - Enlightenment Git wrote:> hermet pushed a commit to branch master.>> commit 6c7b2afd9bb8767a2d90c48a3b7e68a650585d71> Author: ChunEon Park <hermet>@hermet.pe.kr>> Date: Wed Jul 17 15:05:40 2013 +0900>> elementary/widget - use eina_inlist in transate data to improve memory access / allocations.> ---> src/lib/elm_widget.c 35 +++++++++++++++++++++--------------> src/lib/elm_widget.h 4 ++--> 2 files changed, 23 insertions(+), 16 deletions(-)>> diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c> index f3d2fe9..370fb67 100644> --- a/src/lib/elm_widget.c> +++ b/src/lib/elm_widget.c> @@ -40,6 +40,7 @@ struct _Elm_Event_Cb_Data> > struct _Elm_Translate_String_Data> {> + EINA_INLIST;> Eina_Stringshare *id;> Eina_Stringshare *domain;> Eina_Stringshare *string;> @@ -305,11 +306,15 @@ _elm_widget_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)> }> sd->tooltips = eina_list_free(sd->tooltips); /* should be empty anyway */> sd->cursors = eina_list_free(sd->cursors); /* should be empty anyway */> - EINA_LIST_FREE(sd->translate_strings, ts)> + while (sd->translate_strings)> {> + ts = EINA_INLIST_CONTAINER_GET(sd->translate_strings,> + Elm_Translate_String_Data);> eina_stringshare_del(ts->id);> eina_stringshare_del(ts->domain);> eina_stringshare_del(ts->string);> + sd->translate_strings = eina_inlist_remove(sd->translate_strings,> + sd->translate_strings);> free(ts);> }> > @@ -3815,16 +3820,15 @@ elm_widget_domain_translatable_part_text_set(Evas_Object *obj,> }> > static Elm_Translate_String_Data *> -_translate_string_data_get(Eina_List *translate_strings, const char *part)> +_translate_string_data_get(Eina_Inlist *translate_strings, const char *part)> {> Elm_Translate_String_Data *ts;> Eina_Stringshare *str;> - Eina_List *l;> > - if (eina_list_count(translate_strings) == 0) return NULL;> + if (!translate_strings) return NULL;> > str = eina_stringshare_add(part);> - EINA_LIST_FOREACH(translate_strings, l, ts)> + EINA_INLIST_FOREACH(translate_strings, ts)> {> if (ts->id == str) break;> else ts = NULL;> @@ -3835,9 +3839,9 @@ _translate_string_data_get(Eina_List *translate_strings, const char *part)> }> > static Elm_Translate_String_Data *> -_part_text_translatable_set(Eina_List **translate_strings, const char *part, Eina_Bool translatable, Eina_Bool preset)> +_part_text_translatable_set(Eina_Inlist **translate_strings, const char *part, Eina_Bool translatable, Eina_Bool preset)> {> - Eina_List *t;> + Eina_Inlist *t;> Elm_Translate_String_Data *ts;> t = *translate_strings;> ts = _translate_string_data_get(t, part);> @@ -3850,7 +3854,7 @@ _part_text_translatable_set(Eina_List **translate_strings, const char *part, Ein> if (!ts) return NULL;> > ts->id = eina_stringshare_add(part);> - t = eina_list_append(t, ts);> + t = eina_inlist_append(t, (Eina_Inlist*) ts);> }> if (preset) ts->preset = EINA_TRUE;> }> @@ -3860,7 +3864,7 @@ _part_text_translatable_set(Eina_List **translate_strings, const char *part, Ein> {> if (ts)> {> - t = eina_list_remove(t, ts);> + t = eina_inlist_remove(t, EINA_INLIST_GET(ts));> eina_stringshare_del(ts->id);> eina_stringshare_del(ts->domain);> eina_stringshare_del(ts->string);> @@ -3979,7 +3983,7 @@ elm_widget_translate(Evas_Object *obj)> }> > static const char*> -_part_text_translate(Eina_List *translate_strings,> +_part_text_translate(Eina_Inlist *translate_strings,> const char *part,> const char *text)> {> @@ -4035,7 +4039,7 @@ _elm_widget_translate(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list> > #ifdef HAVE_GETTEXT> Elm_Translate_String_Data *ts;> - EINA_LIST_FOREACH(sd->translate_strings, l, ts)> + EINA_INLIST_FOREACH(sd->translate_strings, ts)> {> if (!ts->string) continue;> const char *s = dgettext(ts->domain, ts->string);> @@ -4905,11 +4909,15 @@ _elm_widget_item_free(Elm_Widget_Item *item)> free(wisd);> }> > - EINA_LIST_FREE(item->translate_strings, ts)> + while (item->translate_strings)> {> + ts = EINA_INLIST_CONTAINER_GET(item->translate_strings,> + Elm_Translate_String_Data);> eina_stringshare_del(ts->id);> eina_stringshare_del(ts->domain);> eina_stringshare_del(ts->string);> + item->translate_strings = eina_inlist_remove(item->translate_strings,> + item->translate_strings);> free(ts);> }> > @@ -5747,8 +5755,7 @@ _elm_widget_item_translate(Elm_Widget_Item *item)> > #ifdef HAVE_GETTEXT> Elm_Translate_String_Data *ts;> - const Eina_List *l;> - EINA_LIST_FOREACH(item->translate_strings, l, ts)> + EINA_INLIST_FOREACH(item->translate_strings, ts)> {> if (!ts->string) continue;> const char *s = dgettext(ts->domain, ts->string);> diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h> index 20bb47a..388b2db 100644> --- a/src/lib/elm_widget.h> +++ b/src/lib/elm_widget.h> @@ -402,7 +402,7 @@ typedef struct _Elm_Widget_Smart_Data> int child_drag_x_locked;> int child_drag_y_locked;> > - Eina_List *translate_strings;> + Eina_Inlist *translate_strings;> Eina_List *focus_chain;> Eina_List *event_cb;> > @@ -575,7 +575,7 @@ struct _Elm_Widget_Item> Evas_Object *access_obj;> const char *access_info;> Eina_List *access_order;> - Eina_List *translate_strings;> + Eina_Inlist *translate_strings;> Eina_List *signals;> > Eina_Bool disabled : 1;>------------------------------------------------------------------------------See everything from the browser to the database with AppDynamicsGet end-to-end visibility with application monitoring from AppDynamicsIsolate bottlenecks and diagnose root cause in seconds.Start your free trial of AppDynamics Pro today!http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk_______________________________________________enlightenment-devel mailing listenlightenment-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel