Mercurial > vim
changeset 20669:2407ffaefc02 v8.2.0888
patch 8.2.0888: readdirex() returns size -2 for a directory
Commit: https://github.com/vim/vim/commit/441d60efd8f0e4a44d0cf4bca11cb72e6c830e47
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 02 Jun 2020 22:30:03 +0200 |
parents | ba02770e447a |
children | acdeafd06233 |
files | src/fileio.c src/testdir/test_functions.vim src/version.c |
diffstat | 3 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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 })