X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fstr_talloc%2Fstr_talloc.c;h=88e02ef2edfc58bab2a33c1abad4b9000a19fc61;hb=703cea0c78a896c658272af06306218fc0bb23cc;hp=3bcb1f2a9cf3f7836603bfa9cbed7524f98c87ff;hpb=100444225380d3f5ca29424ea54703d308c7c651;p=ccan diff --git a/ccan/str_talloc/str_talloc.c b/ccan/str_talloc/str_talloc.c index 3bcb1f2a..88e02ef2 100644 --- a/ccan/str_talloc/str_talloc.c +++ b/ccan/str_talloc/str_talloc.c @@ -38,11 +38,17 @@ char *strjoin(const void *ctx, char *strings[], const char *delim) { unsigned int i; char *ret = talloc_strdup(ctx, ""); + size_t totlen = 0, dlen = strlen(delim); for (i = 0; strings[i]; i++) { - ret = talloc_append_string(ret, strings[i]); - ret = talloc_append_string(ret, delim); + size_t len = strlen(strings[i]); + ret = talloc_realloc(ctx, ret, char, totlen + len + dlen + 1); + memcpy(ret + totlen, strings[i], len); + totlen += len; + memcpy(ret + totlen, delim, dlen); + totlen += dlen; } + ret[totlen] = '\0'; return ret; }