summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2015-09-21 16:56:14 +0700
committerJunio C Hamano <gitster@pobox.com>2015-09-21 11:06:03 -0700
commite6efecc46a34a984535e6a90e45a9db45af4eff2 (patch)
tree4539c7a62a9f42aa6e5d51189789039e0c39e001
parentecad27cf98c391d5cfdc26ce0e442e02347baad0 (diff)
downloadgit-e6efecc46a34a984535e6a90e45a9db45af4eff2.tar.gz
dir.c: make last_exclude_matching_from_list() run til the end
The next patch adds some post processing to the result value before it's returned to the caller. Keep all branches reach the end of the function, so we can do it all in one place. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--dir.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/dir.c b/dir.c
index 0943a81964..4893181a0c 100644
--- a/dir.c
+++ b/dir.c
@@ -752,6 +752,7 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname,
int *dtype,
struct exclude_list *el)
{
+ struct exclude *exc = NULL; /* undecided */
int i;
if (!el->nr)
@@ -773,18 +774,22 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname,
if (match_basename(basename,
pathlen - (basename - pathname),
exclude, prefix, x->patternlen,
- x->flags))
- return x;
+ x->flags)) {
+ exc = x;
+ break;
+ }
continue;
}
assert(x->baselen == 0 || x->base[x->baselen - 1] == '/');
if (match_pathname(pathname, pathlen,
x->base, x->baselen ? x->baselen - 1 : 0,
- exclude, prefix, x->patternlen, x->flags))
- return x;
+ exclude, prefix, x->patternlen, x->flags)) {
+ exc = x;
+ break;
+ }
}
- return NULL; /* undecided */
+ return exc;
}
/*