pack-objects: refactor the packing list
[gitweb.git] / refs.c
diff --git a/refs.c b/refs.c
index 6383813627ece441aa780c49f71feeaa41145c5c..3710748ab88d8fa4639c3a0a436ca0e2b0c25552 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -72,6 +72,10 @@ int check_refname_format(const char *refname, int flags)
 {
        int component_len, component_count = 0;
 
+       if (!strcmp(refname, "@"))
+               /* Refname is a single character '@'. */
+               return -1;
+
        while (1) {
                /* We are at the start of a path component. */
                component_len = check_refname_component(refname, flags);
@@ -1951,7 +1955,7 @@ static int remove_empty_directories(const char *file)
 static char *substitute_branch_name(const char **string, int *len)
 {
        struct strbuf buf = STRBUF_INIT;
-       int ret = interpret_branch_name(*string, &buf);
+       int ret = interpret_branch_name(*string, *len, &buf);
 
        if (ret == *len) {
                size_t size;
@@ -3231,7 +3235,7 @@ int update_ref(const char *action, const char *refname,
               int flags, enum action_on_err onerr)
 {
        struct ref_lock *lock;
-       lock = update_ref_lock(refname, oldval, flags, 0, onerr);
+       lock = update_ref_lock(refname, oldval, flags, NULL, onerr);
        if (!lock)
                return 1;
        return update_ref_write(action, refname, sha1, lock, onerr);