]> git.ozlabs.org Git - ccan/blobdiff - ccan/str_talloc/str_talloc.c
failtest: add --trace to replace --tracepath
[ccan] / ccan / str_talloc / str_talloc.c
index 3bcb1f2a9cf3f7836603bfa9cbed7524f98c87ff..ce7fdf8f557962de34eeaeaec10b6985f9b0f429 100644 (file)
@@ -1,3 +1,4 @@
+/* Licensed under LGPLv2.1+ - see LICENSE file for details */
 #include <unistd.h>
 #include <stdint.h>
 #include <string.h>
@@ -38,11 +39,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;
 }