[PATCH] Fix git-rev-parse's parent handling
[gitweb.git] / sha1_name.c
index df3ba2d43f14d9dbcc805a639c3f413f60c2e26a..5d1e441e5a9b7c0d6a03e3ee9add8a51238a3227 100644 (file)
@@ -202,15 +202,18 @@ static int get_sha1_1(const char *name, int len, unsigned char *sha1)
                parent = name[len-1] - '0';
                len -= 2;
        }
-       else if (len > 1 && name[len-1] == '^')
+       else if (len > 1 && name[len-1] == '^') {
                parent = 1;
-       else
+               len--;
+       } else
                parent = -1;
 
        if (0 <= parent) {
-               ret = get_parent(name, len-1, sha1, parent);
+               ret = get_parent(name, len, sha1, parent);
                if (!ret)
                        return 0;
+               else if(parent>0)
+                       return ret;
        }
        ret = get_sha1_basic(name, len, sha1);
        if (!ret)