From 30b9b98296c7a5b2716d00843244ce547dc6678b Mon Sep 17 00:00:00 2001 From: Nathaniel Walizer Date: Sat, 25 Jan 2025 23:51:54 -0800 Subject: [PATCH] Remember last selected ROM on load failure --- src/nese.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/nese.c b/src/nese.c index 312ba37..0198418 100644 --- a/src/nese.c +++ b/src/nese.c @@ -112,6 +112,10 @@ static int select_rom(menu_state* menu, cart_info* cur_cart) { int status = 0; cart_info cart = {0}; + cart_info ref_cart = { + .filename = cur_cart->filename, + .file = cur_cart->file, + }; nes_cart new_cart = {0}; while (0 == status && NULL == cart.file) { @@ -125,22 +129,22 @@ static int select_rom(menu_state* menu, // Program closed inside modal status = input_Result_Quit; } - free(cart.filename); - cart.filename = NULL; } if (0 == status) { - cart.filename = run_main_menu(menu, comp, cur_cart); + char* new_filename = run_main_menu(menu, comp, + &ref_cart); - if ((char*)-1 == cart.filename) { - // This means that we quit + if ((char*)-1 == new_filename) { status = input_Result_Quit; - } else if (NULL == cart.filename) { - // This means we didn't press "cancel" + } else if (NULL == new_filename) { status = input_Result_Cancel; } else { + free(cart.filename); + cart.filename = new_filename; + ref_cart.filename = new_filename; cart.file = nes_load_cart(&new_cart, cart.filename); } @@ -157,6 +161,9 @@ static int select_rom(menu_state* menu, *cur_cart = cart; nes_setup_cart(comp->sys); + + } else { + free(cart.filename); } return status;