# HG changeset patch # User Bram Moolenaar # Date 1591129803 -7200 # Node ID 2407ffaefc027a802f4eb9bd7bff01c0fe2d269e # Parent ba02770e447aa1e072843d8ee436c169516c58c8 patch 8.2.0888: readdirex() returns size -2 for a directory Commit: https://github.com/vim/vim/commit/441d60efd8f0e4a44d0cf4bca11cb72e6c830e47 Author: Bram Moolenaar Date: Tue Jun 2 22:19:50 2020 +0200 patch 8.2.0888: readdirex() returns size -2 for a directory Problem: Readdirex() returns size -2 for a directory. Solution: Add missing "else". (Ken Takata, closes https://github.com/vim/vim/issues/6185) diff --git a/src/fileio.c b/src/fileio.c --- a/src/fileio.c +++ b/src/fileio.c @@ -4575,7 +4575,7 @@ create_readdirex_item(char_u *path, char 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 --- 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 --- 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,