From 47fb82538a2643ac2e9c4909bcfa59534342f82b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Sep 2017 22:02:49 +0200 Subject: [PATCH] Reduce stack usage --- menu/cbs/menu_cbs_deferred_push.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index e1485aa237..155fa43f3d 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -695,7 +695,8 @@ static int general_push(menu_displaylist_info_t *info, } { union string_list_elem_attr attr; - char newstring2[PATH_MAX_LENGTH]; + size_t path_size = PATH_MAX_LENGTH * sizeof(char); + char *newstring2 = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); struct string_list *str_list3 = string_split(info->exts, "|"); newstring2[0] = '\0'; @@ -706,17 +707,19 @@ static int general_push(menu_displaylist_info_t *info, string_list_append(str_list3, "mod", attr); string_list_append(str_list3, "xm", attr); #endif - string_list_join_concat(newstring2, sizeof(newstring2), + string_list_join_concat(newstring2, path_size, str_list3, "|"); string_list_free(str_list3); strlcpy(info->exts, newstring2, sizeof(info->exts)); + free(newstring2); } break; case PUSH_ARCHIVE_OPEN_DETECT_CORE: case PUSH_DETECT_CORE_LIST: { - char newstring[PATH_MAX_LENGTH]; union string_list_elem_attr attr; + size_t path_size = PATH_MAX_LENGTH * sizeof(char); + char *newstring = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); struct string_list *str_list2 = string_list_new(); newstring[0] = '\0'; @@ -759,28 +762,31 @@ static int general_push(menu_displaylist_info_t *info, } } - string_list_join_concat(newstring, sizeof(newstring), + string_list_join_concat(newstring, path_size, str_list2, "|"); strlcpy(info->exts, newstring, sizeof(info->exts)); + { union string_list_elem_attr attr; - char newstring2[PATH_MAX_LENGTH]; + char *newstring2 = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); struct string_list *str_list3 = string_split(info->exts, "|"); - newstring2[0] = '\0'; - attr.i = 0; + newstring2[0] = '\0'; + attr.i = 0; #ifdef HAVE_IBXM string_list_append(str_list3, "s3m", attr); string_list_append(str_list3, "mod", attr); string_list_append(str_list3, "xm", attr); #endif - string_list_join_concat(newstring2, sizeof(newstring2), + string_list_join_concat(newstring2, path_size, str_list3, "|"); string_list_free(str_list3); strlcpy(info->exts, newstring2, sizeof(info->exts)); + free(newstring2); } + free(newstring); string_list_free(str_list2); } break;