]> git.ipfire.org Git - thirdparty/git.git/blobdiff - refspec.c
Merge branch 'rs/refspec-leakfix'
[thirdparty/git.git] / refspec.c
index 9a9bf21934afb74e34b8cef1042860824f4c7282..8d0affc34a6b8c6c22a43e18e5cd40c8c0055a26 100644 (file)
--- a/refspec.c
+++ b/refspec.c
@@ -1,5 +1,5 @@
 #include "cache.h"
-#include "argv-array.h"
+#include "strvec.h"
 #include "refs.h"
 #include "refspec.h"
 
@@ -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)
@@ -202,7 +216,7 @@ int valid_fetch_refspec(const char *fetch_refspec_str)
 }
 
 void refspec_ref_prefixes(const struct refspec *rs,
-                         struct argv_array *ref_prefixes)
+                         struct strvec *ref_prefixes)
 {
        int i;
        for (i = 0; i < rs->nr; i++) {
@@ -221,9 +235,9 @@ void refspec_ref_prefixes(const struct refspec *rs,
                if (prefix) {
                        if (item->pattern) {
                                const char *glob = strchr(prefix, '*');
-                               argv_array_pushf(ref_prefixes, "%.*s",
-                                                (int)(glob - prefix),
-                                                prefix);
+                               strvec_pushf(ref_prefixes, "%.*s",
+                                            (int)(glob - prefix),
+                                            prefix);
                        } else {
                                expand_ref_prefix(ref_prefixes, prefix);
                        }