From 8cef928989b7c1aa663cddaff590c76488cc403e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 5 Aug 2024 10:34:08 +0600 Subject: [PATCH] Memory leak test fix --- source/libublsettings.c | 49 ++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index f0b9756..c42e929 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -604,27 +604,32 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ return NULL; } -char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ - if (char_string&&(*size)>0&&(*size)>item_to_delete&&item_to_delete>=0){ - char **new_char_parsed=NULL; - new_char_parsed=malloc(sizeof(char*)*((*size)-1)); - int flag = 0; - for (int i=0;i < (*size);i++){ - if (i==item_to_delete) { - flag = 1; - } - if (flag == 0) { - new_char_parsed[i]=yon_char_new(char_string[i]); - } - else if (flag == 1 && i!=item_to_delete) { - new_char_parsed[i-1]=yon_char_new(char_string[i]); +char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) { + if (char_string && size && (*size) > 0 && (*size) > item_to_delete && item_to_delete >= 0) { + char **new_char_parsed = malloc(sizeof(char*) * ((*size) - 1)); + if (!new_char_parsed) { + return NULL; + } + + int new_index = 0; + for (int i = 0; i < (*size); i++) { + if (i != item_to_delete) { + new_char_parsed[new_index] = yon_char_new(char_string[i]); + new_index++; + } else { + free(char_string[i]); } } - (*size)=(*size)-1; + + free(char_string); + (*size) = (*size) - 1; return new_char_parsed; - } else return NULL; + } else { + return NULL; + } } + int yon_char_parsed_check_exist(char **parameters, int size, char *param){ if (parameters){ for (int i=0;i2){ + if (string[0]=='\''||string[0]=='\"'){ + done=1; + free(yon_char_divide(string,0));} + if (string[strlen(string)-1]=='\''|| + string[strlen(string)-1]=='\"') { + done=1; + string[strlen(string)-1] = '\0'; + } + } return done; }