From 224c2278130c024d478ac028d0aedd7ed265ba48 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 24 Nov 2023 16:45:46 +0600 Subject: [PATCH] Fixed crash --- source/ubl-utils.c | 70 ++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 46 deletions(-) diff --git a/source/ubl-utils.c b/source/ubl-utils.c index d6cb305..5403a4a 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -673,33 +673,6 @@ char *yon_char_replace(char *source, char *find, char*replace){ return source; } -/**yon_char_parse(char *parameters, int *size, char *divider) - * [EN] - * Parses string [parameters], divided by [divider], - * then returns parsed string array and sets [size] to - * size of returned array -*/ -// char **yon_char_parse(char *parameters, int *size, char *divider){ -// char **string=NULL; -// int i=1; -// string=malloc(sizeof(char*)); -// char *paramline=yon_char_new(parameters); -// char *param; -// while ((param=yon_char_divide_search(paramline,divider,1))){ -// string=realloc(string,sizeof(char*)*i); -// string[i-1]=yon_char_new(param); -// i++; -// if (strcmp(param,paramline)==0) break; -// } -// // string=realloc(string,sizeof(char*)*i); -// // string[i-1]=yon_char_new(paramline); -// // i++; -// // printf("%d\n",i); -// *size=i-1; -// return string; - -// } - /**yon_char_parse(char *parameters, int *size, char *divider) * [EN] * Parses string [parameters], divided by [divider], @@ -707,19 +680,22 @@ char *yon_char_replace(char *source, char *find, char*replace){ * size of returned array */ char **yon_char_parse(char *parameters, int *size, char *divider){ - char **string=NULL; - *size=0; - char *paramline=yon_char_new(parameters); - char *param = strstr(paramline,divider); - for (;param;param=strstr(paramline,divider)){ - string = yon_remalloc(string,sizeof(char*)*((*size)+1)); - string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param)); - *size=(*size)+1; + if (parameters){ + char **string=NULL; + *size=0; + char *paramline=yon_char_new(parameters); + char *param = strstr(paramline,divider); + for (;param;param=strstr(paramline,divider)){ + string = yon_remalloc(string,sizeof(char*)*((*size)+1)); + string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param)); + *size=(*size)+1; + } + string = yon_remalloc(string,sizeof(char*)*((*size)+1)); + string[(*size)]=paramline; + (*size)+=1; + return string; } - string = yon_remalloc(string,sizeof(char*)*((*size)+1)); - string[(*size)]=paramline; - (*size)+=1; - return string; + return NULL; } /**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) @@ -777,13 +753,15 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){ * повторения */ int yon_char_parsed_check_repeats(char **parameters, int size, int *first_overlap, int *second_overlap){ - *first_overlap=0; - *second_overlap=0; - for ((*first_overlap)=0;(*first_overlap)