The copied argv array shall be an identical deep copy except for the internal allocation value. CC: Jeff King <peff@xxxxxxxx> Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- argv-array.c | 13 +++++++++++++ argv-array.h | 1 + 2 files changed, 14 insertions(+) diff --git a/argv-array.c b/argv-array.c index 256741d..6d9c1dd 100644 --- a/argv-array.c +++ b/argv-array.c @@ -68,3 +68,16 @@ void argv_array_clear(struct argv_array *array) } argv_array_init(array); } + +void argv_array_copy(struct argv_array *src, struct argv_array *dst) +{ + int i; + + dst->argv = xmalloc((src->argc + 1) * sizeof(*dst->argv)); + dst->argc = src->argc; + dst->alloc = src->argc; + for (i = 0; i < dst->argc ; i++) + dst->argv[i] = xstrdup(src->argv[i]); + dst->argv[dst->argc] = NULL; +} + diff --git a/argv-array.h b/argv-array.h index c65e6e8..247627da 100644 --- a/argv-array.h +++ b/argv-array.h @@ -19,5 +19,6 @@ LAST_ARG_MUST_BE_NULL void argv_array_pushl(struct argv_array *, ...); void argv_array_pop(struct argv_array *); void argv_array_clear(struct argv_array *); +void argv_array_copy(struct argv_array *src, struct argv_array *dst); #endif /* ARGV_ARRAY_H */ -- 2.5.0.239.g9728e1d.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html