From f33a765765ec3bf40f26a3e15a6a243e0d99b351 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Sun, 11 Apr 2010 13:40:10 +0000 Subject: [PATCH] 'everything' fix leaks SVN revision: 47925 --- src/modules/everything/e_mod_main.c | 6 +++--- src/modules/everything/evry.c | 5 +++-- src/modules/everything/evry_history.c | 5 +++++ src/modules/everything/evry_plug_aggregator.c | 5 ++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/modules/everything/e_mod_main.c b/src/modules/everything/e_mod_main.c index e9d0de3dc..25dad385e 100644 --- a/src/modules/everything/e_mod_main.c +++ b/src/modules/everything/e_mod_main.c @@ -424,10 +424,10 @@ evry_plugin_free(Evry_Plugin *p, int free_pointer) if (p->trigger) eina_stringshare_del(p->trigger); if (p->icon) eina_stringshare_del(p->icon); - if (!free_pointer) - return; - else if (p->free) + if (p->free) p->free(p); + else if (!free_pointer) + return; else E_FREE(p); } diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index bad3baea4..873f5d148 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -754,12 +754,13 @@ _evry_selector_free(Evry_Selector *sel) if (list->visible && (sel == selector)) _evry_view_clear(sel->state); - - evry_plugin_free(sel->aggregator, 1); while (sel->states) _evry_state_pop(sel); + if (sel->aggregator) + evry_plugin_free(sel->aggregator, 1); + if (sel->actions) evry_plug_actions_free(sel->actions); diff --git a/src/modules/everything/evry_history.c b/src/modules/everything/evry_history.c index 99bcc6a94..49095af5d 100644 --- a/src/modules/everything/evry_history.c +++ b/src/modules/everything/evry_history.c @@ -195,6 +195,11 @@ evry_history_unload(void) e_config_domain_save("module.everything.history", hist_edd, evry_hist); + eina_hash_foreach(evry_hist->subjects, _hist_free_cb, NULL); + eina_hash_foreach(evry_hist->actions, _hist_free_cb, NULL); + eina_hash_free(evry_hist->subjects); + eina_hash_free(evry_hist->actions); + E_FREE(evry_hist); evry_hist = NULL; } diff --git a/src/modules/everything/evry_plug_aggregator.c b/src/modules/everything/evry_plug_aggregator.c index a8ae4e7a3..3cab6ebb3 100644 --- a/src/modules/everything/evry_plug_aggregator.c +++ b/src/modules/everything/evry_plug_aggregator.c @@ -233,7 +233,9 @@ _action(Evry_Plugin *plugin, const Evry_Item *it) static void _cleanup(Evry_Plugin *plugin) { - EVRY_PLUGIN_ITEMS_FREE(plugin); + Evry_Item *it; + EINA_LIST_FREE(plugin->items, it) + evry_item_free(it); } static Evas_Object * @@ -257,6 +259,7 @@ _plugin_free(Evry_Plugin *plugin) { PLUGIN(p, plugin); + E_FREE(plugin->config); E_FREE(p); }