diff --git a/libretro-common/file/file_extract.c b/libretro-common/file/file_extract.c index 6dd267fb15..e325d10cbd 100644 --- a/libretro-common/file/file_extract.c +++ b/libretro-common/file/file_extract.c @@ -448,7 +448,10 @@ int zlib_inflate_data_to_file(zlib_file_handle_t *handle, const uint8_t *cdata, uint32_t csize, uint32_t size, uint32_t checksum) { if (handle) + { zlib_stream_free(handle->stream); + free(handle->stream); + } if (!handle || ret == -1) { diff --git a/menu/menu.c b/menu/menu.c index b637bc95c3..c3b526ebcc 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -201,6 +201,8 @@ static void menu_free_list(menu_handle_t *menu) return; settings_list_free(menu->list_settings); + menu_list_free(menu->menu_list); + menu->menu_list = NULL; menu->list_settings = NULL; } diff --git a/menu/menu_common_list.c b/menu/menu_common_list.c index a720c2c12e..3168b82ea0 100644 --- a/menu/menu_common_list.c +++ b/menu/menu_common_list.c @@ -23,7 +23,13 @@ void menu_common_list_clear(void *data) file_list_t *list = (file_list_t*)data; if (list) + { + size_t i; + for (i = 0; i < list->size; i++) + menu_common_list_delete(data, i, 0); + file_list_clear(list); + } } void menu_common_list_set_selection(void *data) diff --git a/menu/menu_list.c b/menu/menu_list.c index 9a5de0576b..521c034aa1 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -172,6 +172,7 @@ void menu_list_free(menu_list_t *menu_list) menu_list_destroy(menu_list->menu_stack); menu_list_destroy(menu_list->selection_buf); + free(menu_list); } menu_list_t *menu_list_new(void)