1
0
forked from aniani/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)
This commit is contained in:
Bram Moolenaar
2020-06-02 22:19:50 +02:00
parent 57f75a5a36
commit 441d60efd8
3 changed files with 7 additions and 3 deletions

View File

@@ -4575,7 +4575,7 @@ create_readdirex_item(char_u *path, char_u *name)
if (S_ISDIR(st.st_mode)) if (S_ISDIR(st.st_mode))
size = 0; size = 0;
// non-perfect check for overflow // 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; size = -2;
if (dict_add_number(item, "size", size) == FAIL) if (dict_add_number(item, "size", size) == FAIL)
goto theend; goto theend;

View File

@@ -1864,13 +1864,15 @@ endfunc
func Test_readdirex() func Test_readdirex()
call mkdir('Xdir') call mkdir('Xdir')
call writefile([], 'Xdir/foo.txt') call writefile(['foo'], 'Xdir/foo.txt')
call writefile([], 'Xdir/bar.txt') call writefile(['barbar'], 'Xdir/bar.txt')
call mkdir('Xdir/dir') call mkdir('Xdir/dir')
" All results " All results
let files = readdirex('Xdir')->map({-> v:val.name}) let files = readdirex('Xdir')->map({-> v:val.name})
call assert_equal(['bar.txt', 'dir', 'foo.txt'], sort(files)) 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" " Only results containing "f"
let files = 'Xdir'->readdirex({ e -> stridx(e.name, 'f') != -1 }) let files = 'Xdir'->readdirex({ e -> stridx(e.name, 'f') != -1 })

View File

@@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
888,
/**/ /**/
887, 887,
/**/ /**/