efreet: Fix leak on error
If we encountered an error, special hashes in internal desktop struct wasn't free'd.
This commit is contained in:
parent
793fd5e847
commit
0f4f0a7e5e
|
@ -651,35 +651,27 @@ efreet_menu_parse(const char *path)
|
||||||
if (!efreet_menu_handle_menu(internal, xml))
|
if (!efreet_menu_handle_menu(internal, xml))
|
||||||
{
|
{
|
||||||
efreet_xml_del(xml);
|
efreet_xml_del(xml);
|
||||||
efreet_menu_internal_free(internal);
|
goto error;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
efreet_xml_del(xml);
|
efreet_xml_del(xml);
|
||||||
|
|
||||||
efreet_menu_resolve_moves(internal);
|
efreet_menu_resolve_moves(internal);
|
||||||
|
|
||||||
if (!efreet_menu_process_dirs(internal))
|
if (!efreet_menu_process_dirs(internal))
|
||||||
{
|
goto error;
|
||||||
efreet_menu_internal_free(internal);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* handle all .desktops */
|
/* handle all .desktops */
|
||||||
if (!efreet_menu_process(internal, 0))
|
if (!efreet_menu_process(internal, 0))
|
||||||
{
|
goto error;
|
||||||
efreet_menu_internal_free(internal);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* handle menus with only unallocated .desktops */
|
/* handle menus with only unallocated .desktops */
|
||||||
if (!efreet_menu_process(internal, 1))
|
if (!efreet_menu_process(internal, 1))
|
||||||
{
|
goto error;
|
||||||
efreet_menu_internal_free(internal);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* layout menu */
|
/* layout menu */
|
||||||
entry = efreet_menu_layout_menu(internal);
|
entry = efreet_menu_layout_menu(internal);
|
||||||
|
|
||||||
|
error:
|
||||||
IF_FREE_HASH(internal->efreet_merged_menus);
|
IF_FREE_HASH(internal->efreet_merged_menus);
|
||||||
IF_FREE_HASH(internal->efreet_merged_dirs);
|
IF_FREE_HASH(internal->efreet_merged_dirs);
|
||||||
efreet_menu_internal_free(internal);
|
efreet_menu_internal_free(internal);
|
||||||
|
|
Loading…
Reference in New Issue