From fba88a14cb230a5c81669cd0709e7ecdf71d1b8f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Oct 2014 01:36:04 +0200 Subject: [PATCH] Set rarch_settings_t * lists to NULL after setting_list_free calls - messy manual bookkeeping --- frontend/menu/menu_common.c | 3 +++ frontend/menu/menu_entries.c | 10 +++++++++- settings_list.c | 1 - 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index fb72ef04ea..22cea89b27 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -177,6 +177,9 @@ void menu_free_list(void *data) settings_list_free(menu->list_mainmenu); settings_list_free(menu->list_settings); + + menu->list_mainmenu = NULL; + menu->list_settings = NULL; } bool menu_init_list(void *data) diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index ea79475050..f5219395ba 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -179,6 +179,8 @@ int menu_entries_push_list(menu_handle_t *menu, if (!strcmp(label, "mainmenu")) { settings_list_free(menu->list_mainmenu); + menu->list_mainmenu = NULL; + menu->list_mainmenu = (rarch_setting_t *) setting_data_get_list(SL_FLAG_MAIN_MENU); rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(menu->list_mainmenu, "Main Menu"); @@ -201,6 +203,8 @@ int menu_entries_push_list(menu_handle_t *menu, else if (menu_type == MENU_FILE_CATEGORY) { settings_list_free(menu->list_settings); + menu->list_settings = NULL; + menu->list_settings = (rarch_setting_t *) setting_data_get_list(SL_FLAG_ALL_SETTINGS); rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(menu->list_settings, @@ -234,6 +238,8 @@ int menu_entries_push_list(menu_handle_t *menu, else if (!strcmp(label, "settings")) { settings_list_free(menu->list_settings); + menu->list_settings = NULL; + menu->list_settings = (rarch_setting_t *) setting_data_get_list(SL_FLAG_ALL_SETTINGS); rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(menu->list_settings, @@ -429,7 +435,9 @@ int menu_entries_push_list(menu_handle_t *menu, else if (!strcmp(label, "Input Options")) { rarch_setting_t *setting_data = (rarch_setting_t*)menu->list_settings; - settings_list_free(setting_data); + settings_list_free(menu->list_settings); + menu->list_settings = NULL; + setting_data = (rarch_setting_t *) setting_data_get_list(SL_FLAG_ALL_SETTINGS); file_list_clear(list); diff --git a/settings_list.c b/settings_list.c index c34690217f..85ac88ccca 100644 --- a/settings_list.c +++ b/settings_list.c @@ -111,7 +111,6 @@ void settings_list_free(rarch_setting_t *list) { if (list) free(list); - list = NULL; } rarch_setting_t *settings_list_new(unsigned size)