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:
@@ -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;
|
||||
|
@@ -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 })
|
||||
|
@@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
888,
|
||||
/**/
|
||||
887,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user