It is clearer if the check whether a loose reference file is a symref
is followed immediately by the code to handle the symref, rather than
the current code, which has the if statement the other way around.

Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu>
---
 refs.c | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/refs.c b/refs.c
index ceba23c..771941b 100644
--- a/refs.c
+++ b/refs.c
@@ -1497,35 +1497,35 @@ const char *resolve_ref_unsafe(const char *refname, 
unsigned char *sha1, int rea
                        len--;
                buffer[len] = '\0';
 
-               /*
-                * Is it a symbolic ref?
-                */
-               if (!starts_with(buffer, "ref:")) {
-                       /*
-                        * Please note that FETCH_HEAD has a second
-                        * line containing other data.
-                        */
-                       if (get_sha1_hex(buffer, sha1) ||
-                           (buffer[40] != '\0' && !isspace(buffer[40]))) {
+               if (starts_with(buffer, "ref:")) {
+                       /* It is a symbolic ref */
+                       if (flag)
+                               *flag |= REF_ISSYMREF;
+                       buf = buffer + 4;
+                       while (isspace(*buf))
+                               buf++;
+                       if (check_refname_format(buf, REFNAME_ALLOW_ONELEVEL)) {
                                if (flag)
                                        *flag |= REF_ISBROKEN;
                                errno = EINVAL;
                                return NULL;
                        }
-                       return refname;
+                       refname = strcpy(refname_buffer, buf);
+                       continue;
                }
-               if (flag)
-                       *flag |= REF_ISSYMREF;
-               buf = buffer + 4;
-               while (isspace(*buf))
-                       buf++;
-               if (check_refname_format(buf, REFNAME_ALLOW_ONELEVEL)) {
+
+               /*
+                * It must be a normal ref. Please note that
+                * FETCH_HEAD has a second line containing other data.
+                */
+               if (get_sha1_hex(buffer, sha1) ||
+                   (buffer[40] != '\0' && !isspace(buffer[40]))) {
                        if (flag)
                                *flag |= REF_ISBROKEN;
                        errno = EINVAL;
                        return NULL;
                }
-               refname = strcpy(refname_buffer, buf);
+               return refname;
        }
 }
 
-- 
2.1.1

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to