From: Bram Moolenaar Date: Tue, 2 Jun 2020 20:19:50 +0000 (+0200) Subject: patch 8.2.0888: readdirex() returns size -2 for a directory X-Git-Tag: v8.2.0888 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=441d60efd8f0e4a44d0cf4bca11cb72e6c830e47;p=vim 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 #6185) --- diff --git a/src/fileio.c b/src/fileio.c index e71b639a5..4da3afc54 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 a82c70bbc..1de9c4c55 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 91d4a467b..95225107c 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 888, /**/ 887, /**/