From: Michael Haggerty Date: Wed, 3 Jun 2015 13:51:58 +0000 (+0200) Subject: read_loose_refs(): simplify function logic X-Git-Tag: v2.5.0-rc0~14^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f5517074f8f5cecc773b2ff927be4a059f2c9db0;p=thirdparty%2Fgit.git read_loose_refs(): simplify function logic Make it clearer that there are two possible ways to read the reference, but that we handle read errors uniformly regardless of which way it was read. This refactoring also makes the following change easier to implement. Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index 3a26ad4e65..3c311d44c1 100644 --- a/refs.c +++ b/refs.c @@ -1281,19 +1281,24 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir) create_dir_entry(refs, refname.buf, refname.len, 1)); } else { + int read_ok; + if (*refs->name) { hashclr(sha1); flag = 0; - if (resolve_gitlink_ref(refs->name, refname.buf, sha1) < 0) { - hashclr(sha1); - flag |= REF_ISBROKEN; - } - } else if (read_ref_full(refname.buf, - RESOLVE_REF_READING, - sha1, &flag)) { + read_ok = !resolve_gitlink_ref(refs->name, + refname.buf, sha1); + } else { + read_ok = !read_ref_full(refname.buf, + RESOLVE_REF_READING, + sha1, &flag); + } + + if (!read_ok) { hashclr(sha1); flag |= REF_ISBROKEN; } + if (check_refname_format(refname.buf, REFNAME_ALLOW_ONELEVEL)) { hashclr(sha1);