menu_settings_free - prevent null pointer indirections

This commit is contained in:
twinaphex 2018-08-05 16:59:59 +02:00
parent 3f959637f2
commit d9f4675a51
2 changed files with 11 additions and 9 deletions

View File

@ -8740,14 +8740,14 @@ static bool setting_append_list(
return true;
}
bool menu_setting_free(void *data)
void menu_setting_free(void *data)
{
unsigned values, n;
rarch_setting_t *setting = (rarch_setting_t*)data;
rarch_setting_t **list = &setting;
if (!setting)
return false;
return;
/* Free data which was previously tagged */
for (; setting_get_type(setting) != ST_NONE; (*list = *list + 1))
@ -8756,24 +8756,26 @@ bool menu_setting_free(void *data)
switch (1 << n)
{
case SD_FREE_FLAG_VALUES:
free((void*)setting->values);
if (setting->values)
free((void*)setting->values);
setting->values = NULL;
break;
case SD_FREE_FLAG_NAME:
free((void*)setting->name);
if (setting->name)
free((void*)setting->name);
setting->name = NULL;
break;
case SD_FREE_FLAG_SHORT:
free((void*)setting->short_description);
if (setting->short_description)
free((void*)setting->short_description);
setting->short_description = NULL;
break;
default:
break;
}
free(data);
return true;
if (data)
free(data);
}
static void menu_setting_terminate_last(rarch_setting_t *list, unsigned pos)

View File

@ -162,7 +162,7 @@ void menu_settings_list_current_add_enum_value_idx(
rarch_setting_info_t *list_info,
enum msg_hash_enums enum_idx);
bool menu_setting_free(void *data);
void menu_setting_free(void *data);
bool settings_list_append(rarch_setting_t **list,
rarch_setting_info_t *list_info);