summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-02 22:19:50 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-02 22:19:50 +0200
commit441d60efd8f0e4a44d0cf4bca11cb72e6c830e47 (patch)
treec7a6be9f5f7facb84514bb912378a74ade5a00b6
parent57f75a5a364ad4d8334fdf6b6b41420b48e08390 (diff)
patch 8.2.0888: readdirex() returns size -2 for a directoryv8.2.0888
Problem: Readdirex() returns size -2 for a directory. Solution: Add missing "else". (Ken Takata, closes #6185)
-rw-r--r--src/fileio.c2
-rw-r--r--src/testdir/test_functions.vim6
-rw-r--r--src/version.c2
3 files changed, 7 insertions, 3 deletions
diff --git a/src/fileio.c b/src/fileio.c
index e71b639a5a..4da3afc540 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4575,7 +4575,7 @@ create_readdirex_item(char_u *path, char_u *name)
if (S_ISDIR(st.st_mode))
size = 0;
// non-perfect check for overflow
- if ((off_T)size != (off_T)st.st_size)
+ else if ((off_T)size != (off_T)st.st_size)
size = -2;
if (dict_add_number(item, "size", size) == FAIL)
goto theend;
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index a82c70bbc2..1de9c4c556 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1864,13 +1864,15 @@ endfunc
func Test_readdirex()
call mkdir('Xdir')
- call writefile([], 'Xdir/foo.txt')
- call writefile([], 'Xdir/bar.txt')
+ call writefile(['foo'], 'Xdir/foo.txt')
+ call writefile(['barbar'], 'Xdir/bar.txt')
call mkdir('Xdir/dir')
" All results
let files = readdirex('Xdir')->map({-> v:val.name})
call assert_equal(['bar.txt', 'dir', 'foo.txt'], sort(files))
+ let sizes = readdirex('Xdir')->map({-> v:val.size})
+ call assert_equal([0, 4, 7], sort(sizes))
" Only results containing "f"
let files = 'Xdir'->readdirex({ e -> stridx(e.name, 'f') != -1 })
diff --git a/src/version.c b/src/version.c
index 91d4a467ba..95225107c0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 888,
+/**/
887,
/**/
886,