diff --git a/retroarch.c b/retroarch.c index 9df730dfd9..872c5714a4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2138,7 +2138,6 @@ static bool rarch_update_system_info(struct retro_system_info *_info, bool *load_no_content) { #if defined(HAVE_DYNAMIC) - libretro_free_system_info(_info); if (!(*g_settings.libretro)) return false; @@ -2187,9 +2186,15 @@ bool rarch_main_command(unsigned cmd) rarch_environment_cb(RETRO_ENVIRONMENT_EXEC, (void*)g_extern.fullpath); rarch_main_command(RARCH_CMD_QUIT); +#endif + break; + case RARCH_CMD_LOAD_CORE_DEINIT: +#ifdef HAVE_DYNAMIC + libretro_free_system_info(&g_extern.menu.info); #endif break; case RARCH_CMD_LOAD_CORE_PERSIST: + rarch_main_command(RARCH_CMD_LOAD_CORE_DEINIT); { #ifdef HAVE_MENU menu_handle_t *menu = menu_driver_resolve(); diff --git a/retroarch.h b/retroarch.h index ae694ecd90..7a43214c4f 100644 --- a/retroarch.h +++ b/retroarch.h @@ -33,6 +33,7 @@ enum basic_event RARCH_CMD_LOAD_CONTENT, RARCH_CMD_LOAD_CONTENT_PERSIST, /* Loads core. */ + RARCH_CMD_LOAD_CORE_DEINIT, RARCH_CMD_LOAD_CORE, RARCH_CMD_LOAD_CORE_PERSIST, RARCH_CMD_LOAD_STATE,