All pointers aquired with efreet_desktop_get should be free'd with

efreet_desktop_free now.


SVN revision: 30982
This commit is contained in:
Sebastian Dransfeld 2007-07-26 10:20:24 +00:00
parent cd20fbc9d9
commit 4142475b16
3 changed files with 23 additions and 10 deletions

View File

@ -68,6 +68,8 @@ ef_cb_desktop_parse(void)
} }
else ret = 0; else ret = 0;
efreet_desktop_free(desktop);
return ret; return ret;
} }
@ -132,6 +134,7 @@ ef_cb_desktop_save(void)
} }
printf("save data: %d\n", efreet_desktop_save(desktop)); printf("save data: %d\n", efreet_desktop_save(desktop));
efreet_desktop_free(desktop);
desktop = efreet_desktop_empty_new("/tmp/test.desktop"); desktop = efreet_desktop_empty_new("/tmp/test.desktop");
desktop->name = strdup("Efreet Test Application"); desktop->name = strdup("Efreet Test Application");
@ -144,12 +147,7 @@ ef_cb_desktop_save(void)
ecore_list_append(desktop->categories, strdup("Enlightenment")); ecore_list_append(desktop->categories, strdup("Enlightenment"));
printf("save test: %d\n", efreet_desktop_save(desktop)); printf("save test: %d\n", efreet_desktop_save(desktop));
unlink("/tmp/test.desktop"); unlink("/tmp/test.desktop");
#if 0 efreet_desktop_free(desktop);
/* After saving a .desktop, it should be in the cache. This should then
* be destroyed with it. */
ecore_list_destroy(desktop->categories);
desktop->categories = NULL;
#endif
return 1; return 1;
} }
@ -365,6 +363,7 @@ ef_cb_desktop_type_parse(void)
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
int my_type; int my_type;
char *val; char *val;
int ret = 1;
/* add my custom desktop type to efreet */ /* add my custom desktop type to efreet */
my_type = efreet_desktop_type_add("My_Type", cb_type_parse, NULL, my_type = efreet_desktop_type_add("My_Type", cb_type_parse, NULL,
@ -380,17 +379,18 @@ ef_cb_desktop_type_parse(void)
if (desktop->type != my_type) if (desktop->type != my_type)
{ {
printf("Invalid type returned in desktop"); printf("Invalid type returned in desktop");
return 0; ret = 0;
} }
val = (char *)efreet_desktop_type_data_get(desktop); val = (char *)efreet_desktop_type_data_get(desktop);
if (!val || strcmp(val, "Own key")) if (!val || strcmp(val, "Own key"))
{ {
printf("Invalid value of custom key (%s).\n", val); printf("Invalid value of custom key (%s).\n", val);
return 0; ret = 0;
} }
return 1; efreet_desktop_free(desktop);
return ret;
} }

View File

@ -2472,6 +2472,7 @@ static void
efreet_menu_desktop_free(Efreet_Menu_Desktop *md) efreet_menu_desktop_free(Efreet_Menu_Desktop *md)
{ {
IF_RELEASE(md->id); IF_RELEASE(md->id);
if (md->desktop) efreet_desktop_free(md->desktop);
FREE(md); FREE(md);
} }
@ -3414,6 +3415,7 @@ efreet_menu_directory_dirs_process(Efreet_Menu_Internal *internal)
{ {
internal->directory_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare); internal->directory_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
ecore_hash_free_key_cb_set(internal->directory_cache, ECORE_FREE_CB(free)); ecore_hash_free_key_cb_set(internal->directory_cache, ECORE_FREE_CB(free));
ecore_hash_free_value_cb_set(internal->directory_cache, ECORE_FREE_CB(efreet_desktop_free));
ecore_dlist_last_goto(internal->directory_dirs); ecore_dlist_last_goto(internal->directory_dirs);
while ((path = ecore_dlist_previous(internal->directory_dirs))) while ((path = ecore_dlist_previous(internal->directory_dirs)))

View File

@ -76,6 +76,8 @@ static void efreet_util_menus_find_helper(Ecore_List *menus, const char *config_
static void efreet_util_desktops_by_category_add(Efreet_Desktop *desktop); static void efreet_util_desktops_by_category_add(Efreet_Desktop *desktop);
static void efreet_util_desktops_by_category_remove(Efreet_Desktop *desktop); static void efreet_util_desktops_by_category_remove(Efreet_Desktop *desktop);
static void efreet_util_desktop_free(Efreet_Util_Desktop *ud);
static Ecore_Hash *desktop_by_file_id = NULL; static Ecore_Hash *desktop_by_file_id = NULL;
static Ecore_Hash *file_id_by_desktop_path = NULL; static Ecore_Hash *file_id_by_desktop_path = NULL;
static Ecore_Hash *desktops_by_category = NULL; static Ecore_Hash *desktops_by_category = NULL;
@ -103,7 +105,7 @@ efreet_util_init(void)
EFREET_EVENT_DESKTOP_CHANGE = ecore_event_type_new(); EFREET_EVENT_DESKTOP_CHANGE = ecore_event_type_new();
desktop_by_file_id = ecore_hash_new(ecore_str_hash, ecore_str_compare); desktop_by_file_id = ecore_hash_new(ecore_str_hash, ecore_str_compare);
ecore_hash_free_key_cb_set(desktop_by_file_id, ECORE_FREE_CB(ecore_string_release)); ecore_hash_free_key_cb_set(desktop_by_file_id, ECORE_FREE_CB(ecore_string_release));
ecore_hash_free_value_cb_set(desktop_by_file_id, free); ecore_hash_free_value_cb_set(desktop_by_file_id, ECORE_FREE_CB(efreet_util_desktop_free));
file_id_by_desktop_path = ecore_hash_new(ecore_str_hash, ecore_str_compare); file_id_by_desktop_path = ecore_hash_new(ecore_str_hash, ecore_str_compare);
ecore_hash_free_key_cb_set(file_id_by_desktop_path, ECORE_FREE_CB(ecore_string_release)); ecore_hash_free_key_cb_set(file_id_by_desktop_path, ECORE_FREE_CB(ecore_string_release));
@ -1044,3 +1046,12 @@ efreet_util_desktops_by_category_remove(Efreet_Desktop *desktop)
} }
} }
} }
static void
efreet_util_desktop_free(Efreet_Util_Desktop *ud)
{
if (!ud) return;
efreet_desktop_free(ud->desktop);
free(ud);
}