retroarch_validate_game_options - reduce stack usage

This commit is contained in:
twinaphex 2017-09-09 06:21:27 +02:00
parent 75d850eead
commit a14c2101dd

View File

@ -1099,19 +1099,19 @@ static bool retroarch_init_state(void)
bool retroarch_validate_game_options(char *s, size_t len, bool mkdir)
{
char core_path[PATH_MAX_LENGTH];
char config_directory[PATH_MAX_LENGTH];
char *core_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
char *config_directory = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
size_t str_size = PATH_MAX_LENGTH * sizeof(char);
const char *core_name = runloop_system.info.library_name;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
if (string_is_empty(core_name) || string_is_empty(game_name))
return false;
goto error;
config_directory[0] = core_path[0] = '\0';
fill_pathname_application_special(config_directory,
sizeof(config_directory),
APPLICATION_SPECIAL_DIRECTORY_CONFIG);
str_size, APPLICATION_SPECIAL_DIRECTORY_CONFIG);
/* Concatenate strings into full paths for game_path */
fill_pathname_join_special_ext(s,
@ -1120,12 +1120,19 @@ bool retroarch_validate_game_options(char *s, size_t len, bool mkdir)
len);
fill_pathname_join(core_path,
config_directory, core_name, sizeof(core_path));
config_directory, core_name, str_size);
if (!path_is_directory(core_path) && mkdir)
path_mkdir(core_path);
free(core_path);
free(config_directory);
return true;
error:
free(core_path);
free(config_directory);
return false;
}
/* Validates CPU features for given processor architecture.
@ -1225,7 +1232,7 @@ bool retroarch_main_init(int argc, char *argv[])
if (verbosity_is_enabled())
{
char str[255];
char str[128];
str[0] = '\0';