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

Reply via email to