aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/file_search.c6
-rw-r--r--src/nvim/testdir/test_gf.vim23
2 files changed, 26 insertions, 3 deletions
diff --git a/src/nvim/file_search.c b/src/nvim/file_search.c
index 810684eb61..ebefd1157c 100644
--- a/src/nvim/file_search.c
+++ b/src/nvim/file_search.c
@@ -86,7 +86,7 @@ typedef struct ff_stack {
// of wc_part
char **ffs_filearray;
int ffs_filearray_size;
- char_u ffs_filearray_cur; // needed for partly handled dirs
+ int ffs_filearray_cur; // needed for partly handled dirs
/* to store status of partly handled directories
* 0: we work on this directory for the first time
@@ -860,8 +860,8 @@ char_u *vim_findfile(void *search_ctx_arg)
#endif
// push dir to examine rest of subdirs later
- assert(i < UCHAR_MAX - 1);
- stackp->ffs_filearray_cur = (char_u)(i + 1);
+ assert(i < INT_MAX);
+ stackp->ffs_filearray_cur = i + 1;
ff_push(search_ctx, stackp);
if (!path_with_url((char *)file_path)) {
diff --git a/src/nvim/testdir/test_gf.vim b/src/nvim/testdir/test_gf.vim
index 1569177d66..c48e56976e 100644
--- a/src/nvim/testdir/test_gf.vim
+++ b/src/nvim/testdir/test_gf.vim
@@ -194,4 +194,27 @@ func Test_gf_includeexpr()
delfunc IncFunc
endfunc
+" Check that expanding directories can handle more than 255 entries.
+func Test_gf_subdirs_wildcard()
+ let cwd = getcwd()
+ let dir = 'Xtestgf_dir'
+ call mkdir(dir)
+ call chdir(dir)
+ for i in range(300)
+ call mkdir(i)
+ call writefile([], i .. '/' .. i, 'S')
+ endfor
+ set path=./**
+
+ new | only
+ call setline(1, '99')
+ w! Xtest1
+ normal gf
+ call assert_equal('99', fnamemodify(bufname(''), ":t"))
+
+ call chdir(cwd)
+ call delete(dir, 'rf')
+ set path&
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab