Fix buggy ref recording
[gitweb.git] / builtin-push.c
index ada8338cc1d0fbf389cd346b5134595afaaa2e66..581c44ba8e404b80e6a1c2010b501d9bb0642f0b 100644 (file)
@@ -27,13 +27,13 @@ static void add_refspec(const char *ref)
        refspec_nr = nr;
 }
 
-static int expand_one_ref(const char *ref, const unsigned char *sha1)
+static int expand_one_ref(const char *ref, const unsigned char *sha1, int flag, void *cb_data)
 {
        /* Ignore the "refs/" at the beginning of the refname */
        ref += 5;
 
        if (!strncmp(ref, "tags/", 5))
-               add_refspec(strdup(ref));
+               add_refspec(xstrdup(ref));
        return 0;
 }
 
@@ -51,7 +51,7 @@ static void expand_refspecs(void)
        }
        if (!tags)
                return;
-       for_each_ref(expand_one_ref);
+       for_each_ref(expand_one_ref, NULL);
 }
 
 static void set_refspecs(const char **refs, int nr)
@@ -100,12 +100,12 @@ static int get_remotes_uri(const char *repo, const char *uri[MAX_URI])
 
                if (!is_refspec) {
                        if (n < MAX_URI)
-                               uri[n++] = strdup(s);
+                               uri[n++] = xstrdup(s);
                        else
                                error("more than %d URL's specified, ignoring the rest", MAX_URI);
                }
                else if (is_refspec && !has_explicit_refspec)
-                       add_refspec(strdup(s));
+                       add_refspec(xstrdup(s));
        }
        fclose(f);
        if (!n)
@@ -125,13 +125,13 @@ static int get_remote_config(const char* key, const char* value)
            !strncmp(key + 7, config_repo, config_repo_len)) {
                if (!strcmp(key + 7 + config_repo_len, ".url")) {
                        if (config_current_uri < MAX_URI)
-                               config_uri[config_current_uri++] = strdup(value);
+                               config_uri[config_current_uri++] = xstrdup(value);
                        else
                                error("more than %d URL's specified, ignoring the rest", MAX_URI);
                }
                else if (config_get_refspecs &&
                         !strcmp(key + 7 + config_repo_len, ".push"))
-                       add_refspec(strdup(value));
+                       add_refspec(xstrdup(value));
        }
        return 0;
 }