summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-05-15 15:50:56 -0700
committerJunio C Hamano <gitster@pobox.com>2016-05-16 13:55:02 -0700
commitc33b443f0e0ce4f18f8d7bb4bf79c268fefe6fcb (patch)
tree5e82a280a53a052166e586211a369874e087600b
parent953408fbaaad51a9fc4732ca1920cbd1124dfb5a (diff)
downloadgit-c33b443f0e0ce4f18f8d7bb4bf79c268fefe6fcb.tar.gz
attr.c: simplify macroexpand_one()
The double-loop wants to do an early return immediately when one matching macro is found. Eliminate the extra variable 'a' used for that purpose and rewrite the "assign the found item to 'a' to make it non-NULL and force the loop(s) to terminate" with a direct return from there. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--attr.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/attr.c b/attr.c
index 95416d31ca..7bfeef30c4 100644
--- a/attr.c
+++ b/attr.c
@@ -701,24 +701,21 @@ static int fill(const char *path, int pathlen, int basename_offset,
static int macroexpand_one(int nr, int rem)
{
struct attr_stack *stk;
- struct match_attr *a = NULL;
int i;
if (check_all_attr[nr].value != ATTR__TRUE ||
!check_all_attr[nr].attr->maybe_macro)
return rem;
- for (stk = attr_stack; !a && stk; stk = stk->prev)
- for (i = stk->num_matches - 1; !a && 0 <= i; i--) {
+ for (stk = attr_stack; stk; stk = stk->prev) {
+ for (i = stk->num_matches - 1; 0 <= i; i--) {
struct match_attr *ma = stk->attrs[i];
if (!ma->is_macro)
continue;
if (ma->u.attr->attr_nr == nr)
- a = ma;
+ return fill_one("expand", ma, rem);
}
-
- if (a)
- rem = fill_one("expand", a, rem);
+ }
return rem;
}