From: Sylvestre Ledru Date: Sun, 23 Dec 2012 21:23:24 +0000 (+0100) Subject: Remove a memory leak in splitline X-Git-Tag: 5.4.1~711 X-Git-Url: http://gitweb.scilab.org/?p=scilab.git;a=commitdiff_plain;h=5db201217ff8ff7bd1fac44577b29a709a5cde71 Remove a memory leak in splitline Change-Id: I75b116917e16e2f71fb4b9f79f021d41c2597602 --- diff --git a/scilab/modules/spreadsheet/src/c/splitLine.c b/scilab/modules/spreadsheet/src/c/splitLine.c index a6a5c4a..f0b8f92 100644 --- a/scilab/modules/spreadsheet/src/c/splitLine.c +++ b/scilab/modules/spreadsheet/src/c/splitLine.c @@ -14,6 +14,7 @@ #include "splitLine.h" #include "csv_strsubst.h" #include "MALLOC.h" +#include "freeArrayOfString.h" /* ==================================================================== */ char **splitLineCSV(const char *str, const char *sep, int *toks, char meta) { @@ -37,7 +38,8 @@ char **splitLineCSV(const char *str, const char *sep, int *toks, char meta) sprintf(tokenreplacement_string, "%s%s%s", sep, EMPTYFIELD, sep); substitutedstring = csv_strsubst(str, tokenstring_to_search, tokenreplacement_string); /* in a string like foo;bar;;;, replace all the ;;, not only the first and last one */ - while (strstr(substitutedstring, tokenstring_to_search) != NULL) { + while (strstr(substitutedstring, tokenstring_to_search) != NULL) + { substitutedstring = csv_strsubst(substitutedstring, tokenstring_to_search, tokenreplacement_string); } @@ -102,6 +104,7 @@ char **splitLineCSV(const char *str, const char *sep, int *toks, char meta) *toks = 0; FREE(substitutedstring); substitutedstring = NULL; + freeArrayOfString(retstr, strlen(substitutedstring)); return NULL; } memcpy(retstr[curr_str], (idx - len), len); @@ -156,6 +159,7 @@ char **splitLineCSV(const char *str, const char *sep, int *toks, char meta) FREE(substitutedstring); substitutedstring = NULL; } + freeArrayOfString(retstr, strlen(substitutedstring)); return NULL; }