]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.0126: expanding file names fails in dir with more than 255 entries v9.0.0126
authorJohn Drouhard <john@drouhard.dev>
Mon, 1 Aug 2022 10:38:17 +0000 (11:38 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 1 Aug 2022 10:38:17 +0000 (11:38 +0100)
Problem:    Expanding file names fails in directory with more than 255
            entries.
Solution:   Use an int instead of char_u to count. (John Drouhard,
            closes #10818)

src/findfile.c
src/testdir/test_gf.vim
src/version.c

index 12e76b444ad7cdd6b72bb24404cb021915490405..881eef156e2b4d2c0dfc4c441a962cd522d4c76e 100644 (file)
@@ -75,7 +75,7 @@ typedef struct ff_stack
     // of wc_part
     char_u             **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
index 1b3b139810eca88e0b21620167742dbe79b0645a..04228b2c138b98962c66f29159f1f46f6855c4b6 100644 (file)
@@ -138,7 +138,7 @@ func Test_gf_visual()
   call assert_equal('Xtest_gf_visual', bufname('%'))
   call assert_equal(3, getcurpos()[1])
 
-  " do not include the NUL at the end 
+  " do not include the NUL at the end
   call writefile(['x'], 'X')
   let save_enc = &enc
   for enc in ['latin1', 'utf-8']
@@ -250,4 +250,27 @@ func Test_includeexpr_scriptlocal_func()
   bw!
 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
index 4d45122bdba5ed62a7f66f473502d9fcf92ddba7..3dfd3d96445f005d9c3760c687194631135c4f86 100644 (file)
@@ -735,6 +735,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    126,
 /**/
     125,
 /**/