Check NULL return

SVN revision: 50817
This commit is contained in:
Sebastian Dransfeld 2010-08-04 18:21:20 +00:00
parent 0a4617ae38
commit 7b5e166c85
1 changed files with 24 additions and 10 deletions

View File

@ -272,11 +272,11 @@ static Efreet_Desktop *efreet_menu_directory_get(Efreet_Menu_Internal *internal,
const char *path); const char *path);
static void efreet_menu_process_filters(Efreet_Menu_Internal *internal, static void efreet_menu_process_filters(Efreet_Menu_Internal *internal,
unsigned int only_unallocated); unsigned int only_unallocated);
static Eina_List * efreet_menu_process_app_pool(Eina_List *pool, static Eina_List *efreet_menu_process_app_pool(Eina_List *pool,
Eina_List *applications, Eina_List *applications,
Eina_Hash *matches, Eina_Hash *matches,
Efreet_Menu_Filter *filter, Efreet_Menu_Filter *filter,
unsigned int only_unallocated); unsigned int only_unallocated);
static int efreet_menu_filter_matches(Efreet_Menu_Filter_Op *op, static int efreet_menu_filter_matches(Efreet_Menu_Filter_Op *op,
Efreet_Menu_Desktop *md); Efreet_Menu_Desktop *md);
static int efreet_menu_filter_or_matches(Efreet_Menu_Filter_Op *op, static int efreet_menu_filter_or_matches(Efreet_Menu_Filter_Op *op,
@ -700,6 +700,7 @@ efreet_menu_parse(const char *path)
/* split appart the filename and the path */ /* split appart the filename and the path */
internal = efreet_menu_internal_new(); internal = efreet_menu_internal_new();
if (!internal) return NULL;
/* Set default values */ /* Set default values */
internal->show_empty = 0; internal->show_empty = 0;
@ -1122,6 +1123,7 @@ efreet_menu_handle_sub_menu(Efreet_Menu_Internal *parent, Efreet_Xml *xml)
efreet_menu_create_sub_menu_list(parent); efreet_menu_create_sub_menu_list(parent);
internal = efreet_menu_internal_new(); internal = efreet_menu_internal_new();
if (!internal) return 0;
internal->file.path = eina_stringshare_add(parent->file.path); internal->file.path = eina_stringshare_add(parent->file.path);
if (!efreet_menu_handle_menu(internal, xml)) if (!efreet_menu_handle_menu(internal, xml))
{ {
@ -1682,6 +1684,7 @@ efreet_menu_merge(Efreet_Menu_Internal *parent, Efreet_Xml *xml, const char *pat
FREE(rp); FREE(rp);
internal = efreet_menu_internal_new(); internal = efreet_menu_internal_new();
if (!internal) return 0;
efreet_menu_path_set(internal, path); efreet_menu_path_set(internal, path);
efreet_menu_handle_menu(internal, merge_xml); efreet_menu_handle_menu(internal, merge_xml);
efreet_menu_concatenate(parent, internal); efreet_menu_concatenate(parent, internal);
@ -1845,8 +1848,11 @@ efreet_menu_handle_legacy_dir(Efreet_Menu_Internal *parent, Efreet_Xml *xml)
legacy = efreet_menu_handle_legacy_dir_helper(NULL, parent, xml->text, legacy = efreet_menu_handle_legacy_dir_helper(NULL, parent, xml->text,
efreet_xml_attribute_get(xml, "prefix")); efreet_xml_attribute_get(xml, "prefix"));
efreet_menu_concatenate(parent, legacy); if (legacy)
efreet_menu_internal_free(legacy); {
efreet_menu_concatenate(parent, legacy);
efreet_menu_internal_free(legacy);
}
return 1; return 1;
@ -1880,13 +1886,15 @@ efreet_menu_handle_legacy_dir_helper(Efreet_Menu_Internal *root,
path = efreet_menu_path_get(parent, legacy_dir); path = efreet_menu_path_get(parent, legacy_dir);
/* nothing to do if the legacy path doesn't exist */ /* nothing to do if the legacy path doesn't exist */
if (!ecore_file_exists(path)) if (!path || !ecore_file_exists(path))
{ {
eina_stringshare_del(path); eina_stringshare_del(path);
return NULL; return NULL;
} }
legacy_internal = efreet_menu_internal_new(); legacy_internal = efreet_menu_internal_new();
if (!legacy_internal)
return NULL;
legacy_internal->name.internal = eina_stringshare_add(ecore_file_file_get(path)); legacy_internal->name.internal = eina_stringshare_add(ecore_file_file_get(path));
/* add the legacy dir as an app dir */ /* add the legacy dir as an app dir */
@ -1916,6 +1924,11 @@ efreet_menu_handle_legacy_dir_helper(Efreet_Menu_Internal *root,
/* setup a filter for all the conforming .desktop files in the legacy /* setup a filter for all the conforming .desktop files in the legacy
* dir */ * dir */
filter = efreet_menu_filter_new(); filter = efreet_menu_filter_new();
if (!filter)
{
efreet_menu_internal_free(legacy_internal);
return NULL;
}
filter->type = EFREET_MENU_FILTER_INCLUDE; filter->type = EFREET_MENU_FILTER_INCLUDE;
filter->op->type = EFREET_MENU_FILTER_OP_OR; filter->op->type = EFREET_MENU_FILTER_OP_OR;
@ -2378,6 +2391,7 @@ efreet_menu_handle_filter(Efreet_Menu_Internal *parent, Efreet_Xml *xml,
/* filters have a default or relationship */ /* filters have a default or relationship */
filter = efreet_menu_filter_new(); filter = efreet_menu_filter_new();
if (!filter) return 0;
filter->type = type; filter->type = type;
filter->op->type = EFREET_MENU_FILTER_OP_OR; filter->op->type = EFREET_MENU_FILTER_OP_OR;
@ -2795,8 +2809,6 @@ efreet_menu_process_app_pool(Eina_List *pool, Eina_List *applications,
Efreet_Menu_Desktop *md; Efreet_Menu_Desktop *md;
Eina_List *l; Eina_List *l;
if (!pool) return NULL;
EINA_LIST_FOREACH(pool, l, md) EINA_LIST_FOREACH(pool, l, md)
{ {
if (eina_hash_find(matches, md->id)) continue; if (eina_hash_find(matches, md->id)) continue;
@ -3121,6 +3133,7 @@ efreet_menu_resolve_moves(Efreet_Menu_Internal *internal)
*path = '\0'; *path = '\0';
ancestor = efreet_menu_internal_new(); ancestor = efreet_menu_internal_new();
if (!ancestor) goto error;
ancestor->name.internal = eina_stringshare_add(tmp); ancestor->name.internal = eina_stringshare_add(tmp);
efreet_menu_create_sub_menu_list(parent); efreet_menu_create_sub_menu_list(parent);
@ -3143,6 +3156,7 @@ efreet_menu_resolve_moves(Efreet_Menu_Internal *internal)
efreet_menu_internal_free(origin); efreet_menu_internal_free(origin);
} }
} }
error:
IF_FREE_LIST(internal->moves, efreet_menu_move_free); IF_FREE_LIST(internal->moves, efreet_menu_move_free);
} }