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;
efreet_desktop_free(desktop);
return ret;
}
@ -132,6 +134,7 @@ ef_cb_desktop_save(void)
}
printf("save data: %d\n", efreet_desktop_save(desktop));
efreet_desktop_free(desktop);
desktop = efreet_desktop_empty_new("/tmp/test.desktop");
desktop->name = strdup("Efreet Test Application");
@ -144,12 +147,7 @@ ef_cb_desktop_save(void)
ecore_list_append(desktop->categories, strdup("Enlightenment"));
printf("save test: %d\n", efreet_desktop_save(desktop));
unlink("/tmp/test.desktop");
#if 0
/* 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
efreet_desktop_free(desktop);
return 1;
}
@ -365,6 +363,7 @@ ef_cb_desktop_type_parse(void)
Efreet_Desktop *desktop;
int my_type;
char *val;
int ret = 1;
/* add my custom desktop type to efreet */
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)
{
printf("Invalid type returned in desktop");
return 0;
ret = 0;
}
val = (char *)efreet_desktop_type_data_get(desktop);
if (!val || strcmp(val, "Own key"))
{
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)
{
IF_RELEASE(md->id);
if (md->desktop) efreet_desktop_free(md->desktop);
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);
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);
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_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 *file_id_by_desktop_path = NULL;
static Ecore_Hash *desktops_by_category = NULL;
@ -103,7 +105,7 @@ efreet_util_init(void)
EFREET_EVENT_DESKTOP_CHANGE = ecore_event_type_new();
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_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);
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);
}