attr.c: simplify macroexpand_one()
authorJunio C Hamano <gitster@pobox.com>
Sat, 28 Jan 2017 02:01:47 +0000 (18:01 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 Feb 2017 21:46:52 +0000 (13:46 -0800)
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>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
attr.c
diff --git a/attr.c b/attr.c
index 17297fffee718b03f7d9900dc675bc54725e4aaa..e42f931b356d6b5869455f742a62447bdac3ca70 100644 (file)
--- a/attr.c
+++ b/attr.c
@@ -705,24 +705,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;
 }