]> granicus.if.org Git - vim/commitdiff
patch 8.2.0888: readdirex() returns size -2 for a directory v8.2.0888
authorBram Moolenaar <Bram@vim.org>
Tue, 2 Jun 2020 20:19:50 +0000 (22:19 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 2 Jun 2020 20:19:50 +0000 (22:19 +0200)
Problem:    Readdirex() returns size -2 for a directory.
Solution:   Add missing "else". (Ken Takata, closes #6185)

src/fileio.c
src/testdir/test_functions.vim
src/version.c

index e71b639a5a6f181050e61ec28b8c3a68e9ba31c2..4da3afc5404f83f34bd52ded230a79150023c61d 100644 (file)
@@ -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;
index a82c70bbc2334c9f276e6fd44c58a84dda7d331b..1de9c4c55619c8aec49809839dc8079ab57f878a 100644 (file)
@@ -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 })
index 91d4a467ba9a066edff5047a0826c798f40d114d..95225107c0bf3a20173b72732a949a1da75f3727 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    888,
 /**/
     887,
 /**/