aboutsummaryrefslogtreecommitdiffstats
path: root/refspec.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-09-18 17:58:00 -0700
committerJunio C Hamano <gitster@pobox.com>2020-09-18 17:58:00 -0700
commit21de7e9c50a10ba57d81d05bd1ecd9c4dcb5849c (patch)
tree9e5eeeb0d31acbd23c2d7d02e9e2dd929f63c924 /refspec.c
parent9b8074427bd2bb52d0c7ec876ebe0e6834bb69fe (diff)
parent1af8b8c0a570ee0b12a19fdd920a3ea09fb22a75 (diff)
downloadgit-21de7e9c50a10ba57d81d05bd1ecd9c4dcb5849c.tar.gz
Merge branch 'rs/refspec-leakfix'
Leakfix. * rs/refspec-leakfix: refspec: add and use refspec_appendf() push: release strbufs used for refspec formatting
Diffstat (limited to 'refspec.c')
-rw-r--r--refspec.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/refspec.c b/refspec.c
index f10ef284ce..8d0affc34a 100644
--- a/refspec.c
+++ b/refspec.c
@@ -153,7 +153,7 @@ void refspec_init(struct refspec *rs, int fetch)
rs->fetch = fetch;
}
-void refspec_append(struct refspec *rs, const char *refspec)
+static void refspec_append_nodup(struct refspec *rs, char *refspec)
{
struct refspec_item item;
@@ -163,7 +163,21 @@ void refspec_append(struct refspec *rs, const char *refspec)
rs->items[rs->nr++] = item;
ALLOC_GROW(rs->raw, rs->raw_nr + 1, rs->raw_alloc);
- rs->raw[rs->raw_nr++] = xstrdup(refspec);
+ rs->raw[rs->raw_nr++] = refspec;
+}
+
+void refspec_append(struct refspec *rs, const char *refspec)
+{
+ refspec_append_nodup(rs, xstrdup(refspec));
+}
+
+void refspec_appendf(struct refspec *rs, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ refspec_append_nodup(rs, xstrvfmt(fmt, ap));
+ va_end(ap);
}
void refspec_appendn(struct refspec *rs, const char **refspecs, int nr)