diff --git a/fanout.c b/fanout.c index af312c422910ed49bb664bbbf341393adac34a0b..2d0a9873ddca201f3608b2ffda5222c2dc17f094 100644 --- a/fanout.c +++ b/fanout.c @@ -680,6 +680,8 @@ void str_swap_free (char **target, char *source) char *str_append (char *target, const char *data) { + char *newtarget; + if (data == NULL) { return target; } @@ -690,9 +692,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; }