mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
Should get rid of the memory leaks to do with the system info
This commit is contained in:
parent
950aef8ded
commit
1808c6de57
@ -1651,6 +1651,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
if (string_is_empty(path_get(RARCH_PATH_CORE)))
|
||||
return false;
|
||||
#endif
|
||||
libretro_free_system_info(system);
|
||||
libretro_get_system_info(
|
||||
path_get(RARCH_PATH_CORE),
|
||||
system,
|
||||
|
42
dynamic.c
42
dynamic.c
@ -147,13 +147,8 @@ libretro_find_controller_description(
|
||||
**/
|
||||
void libretro_free_system_info(struct retro_system_info *info)
|
||||
{
|
||||
if (!info)
|
||||
return;
|
||||
|
||||
free((void*)info->library_name);
|
||||
free((void*)info->library_version);
|
||||
free((void*)info->valid_extensions);
|
||||
memset(info, 0, sizeof(*info));
|
||||
if (info)
|
||||
memset(info, 0, sizeof(*info));
|
||||
}
|
||||
|
||||
|
||||
@ -313,23 +308,14 @@ static dylib_t libretro_get_system_info_lib(const char *path,
|
||||
bool libretro_get_system_info(const char *path,
|
||||
struct retro_system_info *info, bool *load_no_content)
|
||||
{
|
||||
struct retro_system_info dummy_info;
|
||||
#ifdef HAVE_DYNAMIC
|
||||
dylib_t lib;
|
||||
#endif
|
||||
|
||||
dummy_info.library_name = NULL;
|
||||
dummy_info.library_version = NULL;
|
||||
dummy_info.valid_extensions = NULL;
|
||||
dummy_info.need_fullpath = false;
|
||||
dummy_info.block_extract = false;
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
lib = libretro_get_system_info_lib(
|
||||
path, &dummy_info, load_no_content);
|
||||
dylib_t lib = libretro_get_system_info_lib(
|
||||
path, info, load_no_content);
|
||||
|
||||
if (!lib)
|
||||
return false;
|
||||
|
||||
dylib_close(lib);
|
||||
#else
|
||||
if (load_no_content)
|
||||
{
|
||||
@ -349,21 +335,7 @@ bool libretro_get_system_info(const char *path,
|
||||
ignore_environment_cb = false;
|
||||
}
|
||||
|
||||
retro_get_system_info(&dummy_info);
|
||||
#endif
|
||||
|
||||
memcpy(info, &dummy_info, sizeof(*info));
|
||||
|
||||
if (!string_is_empty(dummy_info.library_name))
|
||||
info->library_name = strdup(dummy_info.library_name);
|
||||
if (!string_is_empty(dummy_info.library_version))
|
||||
info->library_version = strdup(dummy_info.library_version);
|
||||
|
||||
if (dummy_info.valid_extensions)
|
||||
info->valid_extensions = strdup(dummy_info.valid_extensions);
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
dylib_close(lib);
|
||||
retro_get_system_info(info);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user