Prevent crash when Main Menu is empty (#17604)

This commit is contained in:
sonninnos 2025-02-20 14:09:47 +02:00 committed by GitHub
parent 09a59edd6b
commit b5756a1b20
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 9 deletions

View File

@ -3300,7 +3300,7 @@ static float materialui_get_scroll(materialui_handle_t *mui,
float view_centre = 0.0f;
float selection_centre = 0.0f;
if (!mui || !list)
if (!mui || !list || !list->size)
return 0;
/* Get current window size */
@ -6208,7 +6208,7 @@ static void materialui_render_selection_highlight(
struct menu_state *menu_st = menu_state_get_ptr();
menu_list_t *menu_list = menu_st->entries.list;
file_list_t *list = menu_list ? MENU_LIST_GET_SELECTION(menu_list, 0) : NULL;
if (!list)
if (!list || !list->size)
return;
if (!(node = (materialui_node_t*)list->list[selection].userdata))
@ -7750,6 +7750,7 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
video_driver_state_t *video_st = video_state_get_ptr();
struct menu_state *menu_st = menu_state_get_ptr();
menu_list_t *menu_list = menu_st->entries.list;
file_list_t *list = menu_list ? MENU_LIST_GET_SELECTION(menu_list, (unsigned)0) : NULL;
menu_input_t *menu_input = &menu_st->input_state;
size_t selection = menu_st->selection_ptr;
unsigned header_height = p_disp->header_height;
@ -7880,9 +7881,11 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
if (mui->flags & MUI_FLAG_SCROLLBAR_ACTIVE)
materialui_update_scrollbar(mui, video_width, video_height,
header_height, list_x_offset);
materialui_render_menu_list(mui, p_disp,
userdata, selection,
video_width, video_height, list_x_offset);
if (list && list->size)
materialui_render_menu_list(mui, p_disp,
userdata, selection,
video_width, video_height, list_x_offset);
/* Flush first layer of text
* > Menu list only uses list and hint fonts */

View File

@ -4540,6 +4540,9 @@ static void ozone_list_cache(void *data,
selection_buf = MENU_LIST_GET_SELECTION(menu_list, 0);
bottom_boundary = video_info_height - ozone->dimensions.header_height - ozone->dimensions.footer_height;
if (!selection_buf->size)
return;
for (i = 0; i < entries_end; i++)
{
ozone_node_t *node = (ozone_node_t*)selection_buf->list[i].userdata;
@ -5463,6 +5466,9 @@ static void ozone_compute_entries_position(ozone_handle_t *ozone,
selection_buf = MENU_LIST_GET_SELECTION(menu_list, 0);
if (!selection_buf->size)
return;
video_driver_get_size(&video_info_width, &video_info_height);
if (menu_show_sublabels)

View File

@ -382,7 +382,7 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx,
newpath[0] = '\0';
if (!list)
if (!list || !list->size)
return;
path_enabled = (entry_flags & MENU_ENTRY_FLAG_PATH_ENABLED) ? true : false;
@ -5670,7 +5670,7 @@ static int menu_input_post_iterate(
menu_list_t *menu_list = menu_st->entries.list;
file_list_t *selection_buf = menu_list ? MENU_LIST_GET_SELECTION(menu_list, (unsigned)0) : NULL;
size_t selection = menu_st->selection_ptr;
menu_file_list_cbs_t *cbs = selection_buf
menu_file_list_cbs_t *cbs = selection_buf && selection_buf->size
? (menu_file_list_cbs_t*)selection_buf->list[selection].actiondata
: NULL;
@ -7384,7 +7384,7 @@ int generic_menu_entry_action(
file_list_t *menu_stack = menu_list ? MENU_LIST_GET(menu_list, (unsigned)0) : NULL;
size_t entries_size = menu_list ? MENU_LIST_GET_SELECTION(menu_list, 0)->size : 0;
size_t selection_buf_size = selection_buf ? selection_buf->size : 0;
menu_file_list_cbs_t *cbs = selection_buf ?
menu_file_list_cbs_t *cbs = selection_buf && selection_buf->size ?
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
#ifdef HAVE_ACCESSIBILITY
bool accessibility_enable = settings->bools.accessibility_enable;
@ -7664,7 +7664,7 @@ int generic_menu_entry_action(
break;
}
if (MENU_ENTRIES_NEEDS_REFRESH(menu_st))
if (MENU_ENTRIES_NEEDS_REFRESH(menu_st) && selection_buf_size)
{
menu_driver_displaylist_push(
menu_st,