diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index 82ed2dc04e..3661d5d5e2 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -136,11 +136,9 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) file_list_get_actiondata_at_offset(selection_buf, selection) : NULL; - if (cbs->enum_idx != MSG_UNKNOWN) - { + if (cbs && cbs->enum_idx != MSG_UNKNOWN) ret = menu_hash_get_help_enum(cbs->enum_idx, menu->menu_state_msg, sizeof(menu->menu_state_msg)); - } else { unsigned type = 0; diff --git a/tasks/task_overlay.c b/tasks/task_overlay.c index 036b869030..72c6046c8d 100644 --- a/tasks/task_overlay.c +++ b/tasks/task_overlay.c @@ -327,10 +327,14 @@ static bool task_overlay_resolve_targets(struct overlay *ol, unsigned i; struct overlay *current = (struct overlay*)&ol[idx]; + if (!current) + return false; + for (i = 0; i < current->size; i++) { - ssize_t next_idx = 0; - const char *next = current->descs[i].next_index_name; + struct overlay_desc *desc = (struct overlay_desc*)¤t->descs[i]; + const char *next = desc ? desc->next_index_name : NULL; + ssize_t next_idx = (idx + 1) & size; if (!string_is_empty(next)) { @@ -343,10 +347,8 @@ static bool task_overlay_resolve_targets(struct overlay *ol, return false; } } - else - next_idx = (idx + 1) & size; - current->descs[i].next_index = (unsigned)next_idx; + desc->next_index = (unsigned)next_idx; } return true;