From 7ef051f58a723e48b8d2ca597697e0c7a1ddd209 Mon Sep 17 00:00:00 2001 From: Dale Weiler Date: Fri, 4 Jan 2013 09:46:22 +0000 Subject: [PATCH] Fix all the memleaks in the corrector. Holy shit, the amount of hours I wasted trying to find out where I left out ONE little free. --- correct.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/correct.c b/correct.c index 04b0d38..0c1fc88 100644 --- a/correct.c +++ b/correct.c @@ -111,10 +111,12 @@ static char *correct_strndup(const char *src, size_t n) { static char *correct_concat(char *str1, char *str2, bool next) { char *ret = NULL; +#if 0 if (!str1) { str1 = mem_a(1); *str1 = '\0'; } +#endif str1 = mem_r (str1, strlen(str1) + strlen(str2) + 1); ret = strcat(str1, str2); @@ -283,6 +285,8 @@ static char **correct_known(ht table, char **array, size_t rows, size_t *next) { if (correct_find(table, end[jtr]) && !correct_exist(res, len, end[jtr])) { res = mem_r(res, sizeof(char*) * (len + 1)); res[len++] = end[jtr]; + } else { + mem_d(end[jtr]); } } @@ -313,6 +317,8 @@ static void correct_cleanup(char **array, size_t rows) { size_t itr; for (itr = 0; itr < rows; itr++) mem_d(array[itr]); + + mem_d(array); } /* @@ -357,7 +363,6 @@ char *correct_correct(ht table, const char *ident) { if ((e1ident = correct_maximum(table, e1, e1rows))) { found = util_strdup(e1ident); correct_cleanup(e1, e1rows); - mem_d(e1); return found; } } @@ -368,9 +373,6 @@ char *correct_correct(ht table, const char *ident) { correct_cleanup(e1, e1rows); correct_cleanup(e2, e2rows); - - mem_d(e1); - mem_d(e2); return found; } -- 2.39.2