Cleanup config_save_file

This commit is contained in:
twinaphex 2016-12-26 03:01:29 +01:00
parent 7863b3a21f
commit e24f58361c

View File

@ -2929,6 +2929,8 @@ bool config_save_file(const char *path)
path_settings_size = populate_settings_path (settings, &path_settings); path_settings_size = populate_settings_path (settings, &path_settings);
/* Path settings */ /* Path settings */
if (path_settings && (path_settings_size > 0))
{
for (i = 0; i < (unsigned)path_settings_size; i++) for (i = 0; i < (unsigned)path_settings_size; i++)
{ {
const char *value = path_settings[i].ptr; const char *value = path_settings[i].ptr;
@ -2939,26 +2941,47 @@ bool config_save_file(const char *path)
config_set_path(conf, path_settings[i].ident, value); config_set_path(conf, path_settings[i].ident, value);
} }
free(path_settings);
}
#ifdef HAVE_MENU #ifdef HAVE_MENU
config_set_path(conf, "xmb_font", config_set_path(conf, "xmb_font",
!string_is_empty(settings->menu.xmb.font) ? settings->menu.xmb.font : ""); !string_is_empty(settings->menu.xmb.font) ? settings->menu.xmb.font : "");
#endif #endif
/* String settings */ /* String settings */
if (array_settings && (array_settings_size > 0))
{
for (i = 0; i < (unsigned)array_settings_size; i++) for (i = 0; i < (unsigned)array_settings_size; i++)
config_set_string(conf, array_settings[i].ident, config_set_string(conf,
array_settings[i].ident,
array_settings[i].ptr); array_settings[i].ptr);
free(array_settings);
}
/* Float settings */ /* Float settings */
if (float_settings && (float_settings_size > 0))
{
for (i = 0; i < (unsigned)float_settings_size; i++) for (i = 0; i < (unsigned)float_settings_size; i++)
config_set_float(conf, float_settings[i].ident, config_set_float(conf,
float_settings[i].ident,
*float_settings[i].ptr); *float_settings[i].ptr);
free(float_settings);
}
/* Integer settings */ /* Integer settings */
if (int_settings && (int_settings_size > 0))
{
for (i = 0; i < (unsigned)int_settings_size; i++) for (i = 0; i < (unsigned)int_settings_size; i++)
config_set_int(conf, int_settings[i].ident, config_set_int(conf,
int_settings[i].ident,
*int_settings[i].ptr); *int_settings[i].ptr);
free(int_settings);
}
for (i = 0; i < MAX_USERS; i++) for (i = 0; i < MAX_USERS; i++)
{ {
char cfg[64]; char cfg[64];
@ -2976,10 +2999,15 @@ bool config_save_file(const char *path)
} }
/* Boolean settings */ /* Boolean settings */
if (bool_settings && (bool_settings_size > 0))
{
for (i = 0; i < (unsigned)bool_settings_size; i++) for (i = 0; i < (unsigned)bool_settings_size; i++)
config_set_bool(conf, bool_settings[i].ident, config_set_bool(conf, bool_settings[i].ident,
*bool_settings[i].ptr); *bool_settings[i].ptr);
free(bool_settings);
}
#ifdef HAVE_NETWORKGAMEPAD #ifdef HAVE_NETWORKGAMEPAD
for (i = 0; i < MAX_USERS; i++) for (i = 0; i < MAX_USERS; i++)
{ {
@ -3036,17 +3064,6 @@ bool config_save_file(const char *path)
ret = config_file_write(conf, path); ret = config_file_write(conf, path);
config_file_free(conf); config_file_free(conf);
if (bool_settings)
free(bool_settings);
if (int_settings)
free(int_settings);
if (float_settings)
free(float_settings);
if (array_settings)
free(array_settings);
if (path_settings)
free(path_settings);
return ret; return ret;
} }