diff --git a/core_info.c b/core_info.c index e16a4d4748..9bc4b10f49 100644 --- a/core_info.c +++ b/core_info.c @@ -45,24 +45,8 @@ static void core_info_list_resolve_all_extensions( core_info_list_t *core_info_list) { size_t i = 0; - size_t all_ext_len = 0; - char *all_ext = NULL; - for (i = 0; i < core_info_list->count; i++) - { - if (core_info_list->list[i].supported_extensions) - all_ext_len += - (strlen(core_info_list->list[i].supported_extensions) + 2); - } - - all_ext_len += STRLEN_CONST("7z|") + STRLEN_CONST("zip|"); - - all_ext = (char*)calloc(1, all_ext_len); - - if (!all_ext) - return; - - core_info_list->all_ext = all_ext; + core_info_list->all_ext[0] = '\0'; for (i = 0; i < core_info_list->count; i++) { @@ -70,7 +54,8 @@ static void core_info_list_resolve_all_extensions( continue; strlcat(core_info_list->all_ext, - core_info_list->list[i].supported_extensions, all_ext_len); + core_info_list->list[i].supported_extensions, + sizeof(core_info_list->all_ext)); string_concat(core_info_list->all_ext, "|"); } #ifdef HAVE_7ZIP @@ -180,7 +165,6 @@ static void core_info_list_free(core_info_list_t *core_info_list) free(info->firmware); } - free(core_info_list->all_ext); free(core_info_list->list); free(core_info_list); } diff --git a/core_info.h b/core_info.h index 530405c719..3c77365072 100644 --- a/core_info.h +++ b/core_info.h @@ -22,6 +22,7 @@ #include #include +#include RETRO_BEGIN_DECLS @@ -70,7 +71,7 @@ typedef struct { core_info_t *list; size_t count; - char *all_ext; + char all_ext[PATH_MAX_LENGTH]; } core_info_list_t; typedef struct core_info_ctx_firmware