X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=sha1_name.c;h=fdd321448ce144aac87c6e5e50cbe08054951feb;hb=35cc4bcd10862db190df9685b7ad221f2a25404f;hp=df3ba2d43f14d9dbcc805a639c3f413f60c2e26a;hpb=f10e0e0b18c8e2e69535e7380fb3c1f9b097cfda;p=git.git diff --git a/sha1_name.c b/sha1_name.c index df3ba2d4..fdd32144 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -148,7 +148,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) }; const char **p; - if (!get_sha1_hex(str, sha1)) + if (len == 40 && !get_sha1_hex(str, sha1)) return 0; for (p = prefix; *p; p++) { @@ -202,16 +202,15 @@ 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); - if (!ret) - return 0; - } + if (parent >= 0) + return get_parent(name, len, sha1, parent); + ret = get_sha1_basic(name, len, sha1); if (!ret) return 0;