Signed-off-by: Brandon Williams <[email protected]>
---
 dir.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/dir.c b/dir.c
index a508e8076..077b756c2 100644
--- a/dir.c
+++ b/dir.c
@@ -961,7 +961,8 @@ static struct exclude 
*last_exclude_matching_from_list(const char *pathname,
                                                       int pathlen,
                                                       const char *basename,
                                                       int *dtype,
-                                                      struct exclude_list *el)
+                                                      struct exclude_list *el,
+                                                      struct index_state 
*istate)
 {
        struct exclude *exc = NULL; /* undecided */
        int i;
@@ -976,7 +977,7 @@ static struct exclude 
*last_exclude_matching_from_list(const char *pathname,
 
                if (x->flags & EXC_FLAG_MUSTBEDIR) {
                        if (*dtype == DT_UNKNOWN)
-                               *dtype = get_dtype(NULL, &the_index, pathname, 
pathlen);
+                               *dtype = get_dtype(NULL, istate, pathname, 
pathlen);
                        if (*dtype != DT_DIR)
                                continue;
                }
@@ -1012,13 +1013,14 @@ int is_excluded_from_list(const char *pathname,
                          struct exclude_list *el)
 {
        struct exclude *exclude;
-       exclude = last_exclude_matching_from_list(pathname, pathlen, basename, 
dtype, el);
+       exclude = last_exclude_matching_from_list(pathname, pathlen, basename, 
dtype, el, &the_index);
        if (exclude)
                return exclude->flags & EXC_FLAG_NEGATIVE ? 0 : 1;
        return -1; /* undecided */
 }
 
 static struct exclude *last_exclude_matching_from_lists(struct dir_struct *dir,
+                                                       struct index_state 
*istate,
                const char *pathname, int pathlen, const char *basename,
                int *dtype_p)
 {
@@ -1030,7 +1032,7 @@ static struct exclude 
*last_exclude_matching_from_lists(struct dir_struct *dir,
                for (j = group->nr - 1; j >= 0; j--) {
                        exclude = last_exclude_matching_from_list(
                                pathname, pathlen, basename, dtype_p,
-                               &group->el[j]);
+                               &group->el[j], istate);
                        if (exclude)
                                return exclude;
                }
@@ -1121,6 +1123,7 @@ static void prep_exclude(struct dir_struct *dir, const 
char *base, int baselen)
                        int dt = DT_DIR;
                        dir->basebuf.buf[stk->baselen - 1] = 0;
                        dir->exclude = last_exclude_matching_from_lists(dir,
+                                                                       
&the_index,
                                dir->basebuf.buf, stk->baselen - 1,
                                dir->basebuf.buf + current, &dt);
                        dir->basebuf.buf[stk->baselen - 1] = '/';
@@ -1209,7 +1212,7 @@ struct exclude *last_exclude_matching(struct dir_struct 
*dir,
        if (dir->exclude)
                return dir->exclude;
 
-       return last_exclude_matching_from_lists(dir, pathname, pathlen,
+       return last_exclude_matching_from_lists(dir, &the_index, pathname, 
pathlen,
                        basename, dtype_p);
 }
 
-- 
2.13.0.rc1.294.g07d810a77f-goog

Reply via email to