rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=129bf429422e68e3ad4d3f7c3a99eb0d91068235

commit 129bf429422e68e3ad4d3f7c3a99eb0d91068235
Author: Vyacheslav Reutskiy <[email protected]>
Date:   Mon Jul 25 12:20:46 2016 +0300

    widget_list: fix memory leaks
    
    Change-Id: Ia280feaba7664f67bd97bf41961cb5d692b4d316
---
 src/bin/common/widget_list.c     | 16 ++++++++--------
 src/bin/common/widget_list.h     |  2 +-
 src/bin/ui/tab_home_import_edj.c |  7 ++++++-
 3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/bin/common/widget_list.c b/src/bin/common/widget_list.c
index 95e3ed6..e20bbda 100644
--- a/src/bin/common/widget_list.c
+++ b/src/bin/common/widget_list.c
@@ -133,7 +133,7 @@ style_name_get(const Eina_Stringshare *group_name)
    return strdup(style);
 }
 
-const char *
+Eina_Stringshare *
 option_widget_name_get(const char *str, Eina_List **style_list)
 {
    int len = strlen(str);
@@ -166,7 +166,7 @@ option_widget_name_get(const char *str, Eina_List 
**style_list)
              if (!copying && str[i] == ',')
                {
                   style[i - first] = '\0';
-                  list = eina_list_append(list, strdup(style));
+                  list = eina_list_append(list, eina_stringshare_add(style));
                   first = i + 1;
                   continue;
                }
@@ -179,15 +179,15 @@ option_widget_name_get(const char *str, Eina_List 
**style_list)
    else
      {
         style[i - first] = '\0';
-        list = eina_list_append(list, strdup(style));
+        list = eina_list_append(list, eina_stringshare_add(style));
      }
 
    *style_list = list;
 
-   return strdup(widget);
+   return eina_stringshare_add(widget);
 }
 
-const char *
+Eina_Stringshare *
 option_style_name_get(const char *str, Eina_List **cp_style_list)
 {
    int len = strlen(str);
@@ -217,7 +217,7 @@ option_style_name_get(const char *str, Eina_List 
**cp_style_list)
              if (str[i] == ',')
                {
                   cp_style[i - first] = '\0';
-                  list = eina_list_append(list, strdup(cp_style));
+                  list = eina_list_append(list, 
eina_stringshare_add(cp_style));
                   first = i + 1;
                   continue;
                }
@@ -230,12 +230,12 @@ option_style_name_get(const char *str, Eina_List 
**cp_style_list)
    else
      {
         cp_style[i - first] = '\0';
-        list = eina_list_append(list, strdup(cp_style));
+        list = eina_list_append(list, eina_stringshare_add(cp_style));
      }
 
    *cp_style_list = list;
 
-   return strdup(style);
+   return eina_stringshare_add(style);
 }
 
 Eina_List *
diff --git a/src/bin/common/widget_list.h b/src/bin/common/widget_list.h
index b04dc5d..b3f93e0 100644
--- a/src/bin/common/widget_list.h
+++ b/src/bin/common/widget_list.h
@@ -38,7 +38,7 @@ typedef struct _End_Item_Data End_Item_Data;
 
 const char *widget_name_get(const Eina_Stringshare *group_name);
 const char *style_name_get(const Eina_Stringshare *group_name);
-const char *option_widget_name_get(const char *str, Eina_List **style_list);
+Eina_Stringshare *option_widget_name_get(const char *str, Eina_List 
**style_list);
 const char *option_style_name_get(const char *str, Eina_List **cp_style_list);
 Eina_List *widget_prefix_list_get(Eina_List *collections, const char 
*widget_name, const char *style_name);
 
diff --git a/src/bin/ui/tab_home_import_edj.c b/src/bin/ui/tab_home_import_edj.c
index cd24c32..1f62c2b 100644
--- a/src/bin/ui/tab_home_import_edj.c
+++ b/src/bin/ui/tab_home_import_edj.c
@@ -641,6 +641,8 @@ _genlist_style_selected_set(Node *item, Eina_List *styles, 
Eina_Bool selected)
                        widget_list = eina_list_append(widget_list, tmp);
                     }
                }
+             eina_stringshare_del(style_name);
+             EINA_LIST_STRINGSHARE_FREE(cp_style_list);
           }
      }
 }
@@ -649,7 +651,8 @@ void
 _tab_import_edj_data_set(const char *name, const char *path, const char *edj, 
const Eina_List *widgets)
 {
    Eina_List *style_list = NULL;
-   const char *str, *widget_name;
+   const char *str;
+   Eina_Stringshare *widget_name;
    Eina_Strbuf *buf = eina_strbuf_new();
    Eina_Bool first_not_found = true;
 
@@ -697,6 +700,8 @@ _tab_import_edj_data_set(const char *name, const char 
*path, const char *edj, co
              eina_strbuf_append_printf(buf, first_not_found ? "%s" : ", %s", 
widget_name);
              first_not_found = false;
           }
+        eina_stringshare_del(widget_name);
+        EINA_LIST_STRINGSHARE_FREE(style_list);
      }
    elm_genlist_realized_items_update(tab_edj.genlist);
    if (eina_strbuf_length_get(buf))

-- 


Reply via email to