Fix pushing to a pattern with no dst
[gitweb.git] / remote.c
index 33c8e5055b8139fd248cd7b9250fa6e53f829ffa..54c9401a6bc37ad1c138c6c2c68e79b7796006d5 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -536,13 +536,14 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
                }
 
                if (pat) {
-                       dst_name = xmalloc(strlen(pat->dst) +
+                       const char *dst_side = pat->dst ? pat->dst : pat->src;
+                       dst_name = xmalloc(strlen(dst_side) +
                                           strlen(src->name) -
                                           strlen(pat->src) + 2);
-                       strcpy(dst_name, pat->dst);
+                       strcpy(dst_name, dst_side);
                        strcat(dst_name, src->name + strlen(pat->src));
                } else
-                       dst_name = strdup(src->name);
+                       dst_name = xstrdup(src->name);
                dst_peer = find_ref_by_name(dst, dst_name);
                if (dst_peer && dst_peer->peer_ref)
                        /* We're already sending something to this ref. */