free some leaks reported by valgrind in src/bin tests.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 06:19:48 +0000 (06:19 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 06:19:48 +0000 (06:19 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@41117 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/efreet_desktop.c
src/lib/efreet_menu.c

index 72aaf1f..9766519 100644 (file)
@@ -1222,9 +1222,12 @@ efreet_desktop_command_progress_get(Efreet_Desktop *desktop, Eina_List *files,
     if (command->num_pending == 0)
     {
         Eina_List *execs;
+        char *exec;
+
         execs = efreet_desktop_command_build(command);
         ret = efreet_desktop_command_execs_process(command, execs);
-       eina_list_free(execs);
+        EINA_LIST_FREE(execs, exec)
+            free(exec);
         efreet_desktop_command_free(command);
     }
 
index c4b632b..6c62b11 100644 (file)
@@ -1949,7 +1949,10 @@ efreet_menu_handle_legacy_dir_helper(Efreet_Menu_Internal *root,
 
         /* if the .desktop has categories it isn't legacy */
         if (efreet_desktop_category_count_get(desktop) != 0)
+        {
+            efreet_desktop_free(desktop);
             continue;
+        }
 
         /* XXX: This will disappear when the .desktop is free'd */
         efreet_desktop_category_add(desktop, "Legacy");
@@ -2547,9 +2550,12 @@ efreet_menu_entry_new(void)
 EAPI void
 efreet_menu_free(Efreet_Menu *entry)
 {
+    Efreet_Menu *sub;
+
     IF_RELEASE(entry->name);
     IF_RELEASE(entry->icon);
-    entry->entries = eina_list_free(entry->entries);
+    EINA_LIST_FREE(entry->entries, sub)
+        efreet_menu_free(sub);
     IF_RELEASE(entry->id);
     if (entry->desktop) efreet_desktop_free(entry->desktop);
     FREE(entry);
@@ -3420,7 +3426,10 @@ efreet_menu_app_dir_scan(Efreet_Menu_Internal *internal, const char *path, const
             if (eina_list_search_unsorted(internal->app_pool,
                                           EINA_COMPARE_CB(efreet_menu_cb_md_compare_ids),
                                           buf2))
+            {
+                if (desktop) efreet_desktop_free(desktop);
                 continue;
+            }
 
             menu_desktop = efreet_menu_desktop_new();
             menu_desktop->desktop = desktop;