From 13f0a8548fd1b2cf5f58940073fe3c8069f10cd8 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 4 May 2013 14:32:00 +0200 Subject: [PATCH] Fix crash when rgui->info.library_name is NULL. If retroarch was started with g_settings.libretro as a directory, and a ROM loaded. Going into RGUI would see g_settings.libretro as a directory and rgui->info wouldn't be properly initialized. Fixed by updating g_settings.libretro if a specific core is resolved. --- dynamic.c | 12 +++++------- frontend/menu/menu_common.c | 5 ++++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dynamic.c b/dynamic.c index f0e660ab38..d4bebdc16d 100644 --- a/dynamic.c +++ b/dynamic.c @@ -277,11 +277,9 @@ static void load_symbols(bool is_dummy) else { #ifdef HAVE_DYNAMIC - const char *libretro_path = g_settings.libretro; - char libretro_core_buffer[PATH_MAX]; - if (path_is_directory(g_settings.libretro)) { + char libretro_core_buffer[PATH_MAX]; if (!find_first_libretro(libretro_core_buffer, sizeof(libretro_core_buffer), g_settings.libretro, g_extern.fullpath)) { @@ -289,14 +287,14 @@ static void load_symbols(bool is_dummy) rarch_fail(1, "load_dynamic()"); } - libretro_path = libretro_core_buffer; + strlcpy(g_settings.libretro, libretro_core_buffer, sizeof(g_settings.libretro)); } - RARCH_LOG("Loading dynamic libretro from: \"%s\"\n", libretro_path); - lib_handle = dylib_load(libretro_path); + RARCH_LOG("Loading dynamic libretro from: \"%s\"\n", g_settings.libretro); + lib_handle = dylib_load(g_settings.libretro); if (!lib_handle) { - RARCH_ERR("Failed to open dynamic library: \"%s\"\n", libretro_path); + RARCH_ERR("Failed to open dynamic library: \"%s\"\n", g_settings.libretro); rarch_fail(1, "load_dynamic()"); } #endif diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index f2e14e2d61..51081a161d 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -379,9 +379,12 @@ void load_menu_game_prepare(void) } if (rgui->history) + { rom_history_push(rgui->history, *g_extern.fullpath ? g_extern.fullpath : NULL, - g_settings.libretro, rgui->info.library_name); + g_settings.libretro, + rgui->info.library_name); + } } #ifdef HAVE_RGUI