davemds pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/modules/places.git/commit/?id=69b258794ad2e6d7a8d2f871082c11701807a2bc

commit 69b258794ad2e6d7a8d2f871082c11701807a2bc
Author: Dave Andreoli <d...@gurumeditation.it>
Date:   Sat Apr 24 17:17:07 2021 +0200

    don't leak strings in menu
---
 src/e_mod_places.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/e_mod_places.c b/src/e_mod_places.c
index 5fca5a7..2dcc227 100644
--- a/src/e_mod_places.c
+++ b/src/e_mod_places.c
@@ -882,6 +882,8 @@ _places_header_activated_cb(void *data, Evas_Object *o, 
const char *emission, co
 
 
 /* E17 menu augmentation */
+static Eina_List *_menu_strings = NULL;
+
 void
 _places_menu_folder_cb(void *data, E_Menu *m, E_Menu_Item *mi)
 {
@@ -909,11 +911,15 @@ _places_bookmarks_parse(E_Menu *em)
 {
    char line[PATH_MAX];
    char buf[PATH_MAX];
+   const char *s;
    E_Menu_Item *mi;
    Efreet_Uri *uri;
    char *alias;
    FILE* fp;
 
+   EINA_LIST_FREE(_menu_strings, s)
+     eina_stringshare_del(s);
+
    snprintf(buf, sizeof(buf), "%s/gtk-3.0/bookmarks", 
efreet_config_home_get());
    fp = fopen(buf, "r");
    if (!fp)
@@ -940,8 +946,9 @@ _places_bookmarks_parse(E_Menu *em)
                   e_menu_item_label_set(mi, alias ? alias :
                                         ecore_file_file_get(uri->path));
                   e_util_menu_item_theme_icon_set(mi, "user-bookmarks");
-                  e_menu_item_callback_set(mi, _places_menu_folder_cb,
-                                           strdup(uri->path)); //TODO free 
somewhere
+                  s = eina_stringshare_add(uri->path);
+                  e_menu_item_callback_set(mi, _places_menu_folder_cb, s);
+                  _menu_strings = eina_list_append(_menu_strings, s);
                }
              if (uri) efreet_uri_free(uri);
           }

-- 


Reply via email to