resolve_ref_unsafe(): handle the case of an SHA-1 within loop

There is only one "break" statement within the loop, which jumps to
the code after the loop that handles the case of a file that holds a
SHA-1.  So move that code from below the loop into the if statement
where the break was previously located.  This makes the logic flow
more local.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2013-06-19 08:36:27 +02:00 committed by Junio C Hamano
parent 47f534bf92
commit 2884c06ae7

22
refs.c
View File

@ -1300,8 +1300,19 @@ const char *resolve_ref_unsafe(const char *refname, unsigned char *sha1, int rea
/* /*
* Is it a symbolic ref? * Is it a symbolic ref?
*/ */
if (prefixcmp(buffer, "ref:")) if (prefixcmp(buffer, "ref:")) {
break; /*
* 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;
return NULL;
}
return refname;
}
if (flag) if (flag)
*flag |= REF_ISSYMREF; *flag |= REF_ISSYMREF;
buf = buffer + 4; buf = buffer + 4;
@ -1314,13 +1325,6 @@ const char *resolve_ref_unsafe(const char *refname, unsigned char *sha1, int rea
} }
refname = strcpy(refname_buffer, buf); refname = strcpy(refname_buffer, buf);
} }
/* 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;
return NULL;
}
return refname;
} }
char *resolve_refdup(const char *ref, unsigned char *sha1, int reading, int *flag) char *resolve_refdup(const char *ref, unsigned char *sha1, int reading, int *flag)