diff --git a/file_list.c b/file_list.c index eb5129b819..60f4bd173f 100644 --- a/file_list.c +++ b/file_list.c @@ -66,7 +66,7 @@ void file_list_pop(file_list_t *list, size_t *directory_ptr) --list->size; #ifdef HAVE_MENU if (driver.menu_ctx && driver.menu_ctx->list_delete) - driver.menu_ctx->list_delete(list, list->size); + driver.menu_ctx->list_delete(list, list->size, list->size); #endif free(list->list[list->size].path); free(list->list[list->size].label); @@ -92,7 +92,7 @@ void file_list_free(file_list_t *list) { #ifdef HAVE_MENU if (driver.menu_ctx && driver.menu_ctx->list_delete) - driver.menu_ctx->list_delete(list, list->size); + driver.menu_ctx->list_delete(list, i, list->size); #endif free(list->list[i].path); free(list->list[i].label); diff --git a/frontend/menu/disp/menu_display.h b/frontend/menu/disp/menu_display.h index eabb46af94..8aa06de2a4 100644 --- a/frontend/menu/disp/menu_display.h +++ b/frontend/menu/disp/menu_display.h @@ -28,7 +28,7 @@ typedef struct menu_ctx_driver void (*navigation_descend_alphabet)(void *, size_t *); void (*navigation_ascend_alphabet)(void *, size_t *); void (*list_insert)(void *, const char *, const char *, size_t); - void (*list_delete)(void *, size_t); + void (*list_delete)(void *, size_t, size_t); void (*list_clear)(void *); void (*list_set_selection)(void *); void (*init_core_info)(void *); diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index aa039de36e..cc8979a84b 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -493,9 +493,11 @@ static void rmenu_xui_list_insert(void *data, XuiListSetText(m_menulist, list_size, buf); } -static void rmenu_xui_list_delete(void *data, size_t list_size) +static void rmenu_xui_list_delete(void *data, size_t index, + size_t list_size) { (void)data; + (void)index; XuiListDeleteItems(m_menulist, 0, list_size); } diff --git a/frontend/menu/disp/xmb.c b/frontend/menu/disp/xmb.c index 747e1611e8..4d7850940c 100644 --- a/frontend/menu/disp/xmb.c +++ b/frontend/menu/disp/xmb.c @@ -769,16 +769,17 @@ static void xmb_list_insert(void *data, node->y = iy; } -static void xmb_list_delete(void *data, size_t list_size) +static void xmb_list_delete(void *data, size_t index, + size_t list_size) { file_list_t *list = (file_list_t*)data; if (!list) return; - if (list->list[list_size].userdata) - free(list->list[list_size].userdata); - list->list[list_size].userdata = NULL; + if (list->list[index].userdata) + free(list->list[index].userdata); + list->list[index].userdata = NULL; } static void xmb_list_clear(void *data)