X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fstr_talloc%2Fstr_talloc.c;h=88e02ef2edfc58bab2a33c1abad4b9000a19fc61;hp=3bcb1f2a9cf3f7836603bfa9cbed7524f98c87ff;hb=ed7aec77da970556c0281e2c7573bf00d1390ff1;hpb=377395cfa60d0773aab50c977f71b06596ebbc52 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; }