Fix some memory leaks to do with overrides, pass conf to

menu_input_remapping_load
This commit is contained in:
twinaphex 2015-11-15 22:02:24 +01:00
parent 656edd4477
commit aed8d3d1c2
5 changed files with 25 additions and 12 deletions

View File

@ -782,11 +782,13 @@ static bool event_save_auto_state(void)
static void event_init_remapping(void)
{
settings_t *settings = config_get_ptr();
const char *path = settings->input.remapping_path;
config_file_t *conf = config_file_new(path);
if (!settings->input.remap_binds_enable)
if (!settings->input.remap_binds_enable || !conf)
return;
input_remapping_load_file(settings->input.remapping_path);
input_remapping_load_file(conf, path);
}
/**

View File

@ -1859,9 +1859,9 @@ bool config_load_override(void)
settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr();
if (!global || !settings )
if (!global || !settings || !info)
{
RARCH_ERR("Could not obtain global pointer or configuration file pointer to retrieve path of retroarch.cfg.\n");
RARCH_ERR("Could load override config file.\n");
return false;
}
@ -1905,6 +1905,8 @@ bool config_load_override(void)
/* If a core override exists, add its location to append_config_path */
if (new_conf)
{
config_file_free(new_conf);
if (settings->core_specific_config)
{
RARCH_LOG("Overrides: can't use overrides with with per-core configs, disabling overrides\n");
@ -1912,17 +1914,21 @@ bool config_load_override(void)
}
RARCH_LOG("Overrides: core-specific overrides found at %s\n", core_path);
strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config));
should_append = true;
}
else
RARCH_LOG("Overrides: no core-specific overrides found at %s\n", core_path);
/* Create a new config file from game_path */
new_conf = config_file_new(game_path);
/* If a game override exists, add it's location to append_config_path */
if (new_conf)
{
config_file_free(new_conf);
RARCH_LOG("Overrides: game-specific overrides found at %s\n", game_path);
if (should_append)
{
@ -2077,7 +2083,7 @@ bool config_load_remap(void)
if (new_conf)
{
RARCH_LOG("Remaps: game-specific remap found at %s\n", game_path);
if (input_remapping_load_file(game_path))
if (input_remapping_load_file(new_conf, game_path))
{
rarch_main_msg_queue_push("Game remap file loaded", 1, 100, true);
return true;
@ -2097,7 +2103,7 @@ bool config_load_remap(void)
if (new_conf)
{
RARCH_LOG("Remaps: core-specific remap found at %s\n", core_path);
if (input_remapping_load_file(core_path))
if (input_remapping_load_file(new_conf, core_path))
{
rarch_main_msg_queue_push("Core remap file loaded", 1, 100, true);
return true;

View File

@ -21,16 +21,16 @@
/**
* input_remapping_load_file:
* @path : Path to remapping file (absolute path).
* @data : Path to config file.
*
* Loads a remap file from disk to memory.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool input_remapping_load_file(const char *path)
bool input_remapping_load_file(void *data, const char *path)
{
unsigned i, j;
config_file_t *conf = config_file_new(path);
config_file_t *conf = (config_file_t*)data;
settings_t *settings = config_get_ptr();
if (!conf || path[0] == '\0')

View File

@ -26,13 +26,13 @@ extern "C" {
/**
* input_remapping_load_file:
* @path : Path to remapping file (absolute path).
* @data : Path to config file.
*
* Loads a remap file from disk to memory.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool input_remapping_load_file(const char *path);
bool input_remapping_load_file(void *data, const char *path);
/**
* input_remapping_save_file:

View File

@ -691,7 +691,12 @@ static int generic_action_ok(const char *path,
sizeof(global->record.config));
break;
case ACTION_OK_LOAD_REMAPPING_FILE:
input_remapping_load_file(action_path);
{
config_file_t *conf = config_file_new(action_path);
if (conf)
input_remapping_load_file(conf, action_path);
}
break;
case ACTION_OK_LOAD_CHEAT_FILE:
if (global->cheat)