diff options
Diffstat (limited to 'src/metaflac/utils.c')
-rw-r--r-- | src/metaflac/utils.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/metaflac/utils.c b/src/metaflac/utils.c index a653118e..75f42bbd 100644 --- a/src/metaflac/utils.c +++ b/src/metaflac/utils.c @@ -61,21 +61,22 @@ char *local_strdup(const char *source) void local_strcat(char **dest, const char *source) { - size_t ndest, nsource; + size_t ndest, nsource, outlen; FLAC__ASSERT(0 != dest); FLAC__ASSERT(0 != source); - ndest = *dest? strlen(*dest) : 0; + ndest = *dest ? strlen(*dest) : 0; nsource = strlen(source); + outlen = ndest + nsource + 1; if(nsource == 0) return; *dest = safe_realloc_add_3op_(*dest, ndest, /*+*/nsource, /*+*/1); - if(0 == *dest) + if(*dest == NULL) die("out of memory growing string"); - safe_strncpy((*dest)+ndest, source, nsource + 1); + safe_strncat(*dest, source, outlen); } static inline int local_isprint(int c) |