strbuf_branchname(): do not double-expand @{-1}~22
[gitweb.git] / sha1_name.c
index 3820f28ae757cce54a95014629ade4f7feb56efc..371a49d98d27098753016e23fa8a379ed7b72176 100644 (file)
@@ -1055,9 +1055,13 @@ int interpret_branch_name(const char *name, struct strbuf *buf)
 int strbuf_branchname(struct strbuf *sb, const char *name)
 {
        int len = strlen(name);
-       if (interpret_branch_name(name, sb) == len)
+       int used = interpret_branch_name(name, sb);
+
+       if (used == len)
                return 0;
-       strbuf_add(sb, name, len);
+       if (used < 0)
+               used = 0;
+       strbuf_add(sb, name + used, len - used);
        return len;
 }