From d650d013aff27c387761f6d8be84ace892dd9e6e Mon Sep 17 00:00:00 2001 From: frank <3737950+f34nk@users.noreply.github.com> Date: Mon, 26 Mar 2018 15:04:53 +0200 Subject: [PATCH] Removed memory leak in case mycore_realloc failes --- source/modest/finder/pseudo_class.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/source/modest/finder/pseudo_class.c b/source/modest/finder/pseudo_class.c index e4d687a..977545f 100644 --- a/source/modest/finder/pseudo_class.c +++ b/source/modest/finder/pseudo_class.c @@ -97,29 +97,34 @@ bool modest_finder_selector_sub_type_pseudo_class_function_contains(modest_finde if(data == NULL) { return false; } + mycss_selectors_entry_t *sel_entry = list->entries_list[i].entry; if(sel_entry->key->data){ const char *str = sel_entry->key->data; int length = strlen(str) + 1; - data = mycore_realloc(data, length); - if(data == NULL) { + char *new_data = mycore_realloc(data, length); + if(new_data == NULL) { + mycore_free(data); return false; } - snprintf(&data[0], length, "%s", str); + snprintf(&new_data[0], length, "%s", str); + data = new_data; } mycss_selectors_entry_t *next = sel_entry->next; while(next) { if(next->key->data) { int prev = strlen(data); - const char* whitespace = (prev > 0) ? " " : ""; + const char *whitespace = (prev > 0) ? " " : ""; const char *str = next->key->data; int length = strlen(whitespace) + strlen(str) + 1; - data = mycore_realloc(data, prev + length); - if(data == NULL) { + char *new_data = mycore_realloc(data, prev + length); + if(new_data == NULL) { + mycore_free(data); return false; } - snprintf(&data[prev], length, "%s%s", whitespace, str); + snprintf(&new_data[prev], length, "%s%s", whitespace, str); + data = new_data; } next = next->next; } @@ -128,9 +133,7 @@ bool modest_finder_selector_sub_type_pseudo_class_function_contains(modest_finde mycore_free(data); return true; } - else { - mycore_free(data); - } + mycore_free(data); } return false;