diff --git a/fanout.c b/fanout.c index 9af474f2071ab101b8c2814d5804ff664cf6c6bf..c906d66ba7ad46c01e5a1d77dfa466b90dd068ec 100644 --- a/fanout.c +++ b/fanout.c @@ -677,6 +677,8 @@ void str_swap_free (char **target, char *source) char *str_append (char *target, const char *data) { + char *newtarget; + if (data == NULL) { return target; } @@ -687,9 +689,14 @@ char *str_append (char *target, const char *data) } int len = strlen (target) + strlen (data) + 1; - target = realloc (target, len); + newtarget = realloc (target, len); + if (newtarget == NULL) { + fanout_error ("ERROR unable to allocate memory"); + exit (EXIT_FAILURE); + } + newtarget = strcat (newtarget, data); - return strcat (target, data); + return newtarget; }