]> granicus.if.org Git - vim/commitdiff
patch 8.2.1888: Vim9: getbufline(-1, 1, '$') gives an error v8.2.1888
authorBram Moolenaar <Bram@vim.org>
Thu, 22 Oct 2020 16:23:38 +0000 (18:23 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 22 Oct 2020 16:23:38 +0000 (18:23 +0200)
Problem:    Vim9: Getbufline(-1, 1, '$') gives an error.
Solution:   Return an empty list. (closes #7180)

src/evalbuffer.c
src/testdir/test_vim9_builtin.vim
src/version.c

index 34155b9cbbbb77a919d2e48bbad6c595dc421efc..eabe626f50a93eebd11afd0f7c8fc916365e7897 100644 (file)
@@ -717,17 +717,19 @@ get_buffer_lines(
     void
 f_getbufline(typval_T *argvars, typval_T *rettv)
 {
-    linenr_T   lnum;
-    linenr_T   end;
+    linenr_T   lnum = 1;
+    linenr_T   end = 1;
     buf_T      *buf;
 
     buf = tv_get_buf_from_arg(&argvars[0]);
-
-    lnum = tv_get_lnum_buf(&argvars[1], buf);
-    if (argvars[2].v_type == VAR_UNKNOWN)
-       end = lnum;
-    else
-       end = tv_get_lnum_buf(&argvars[2], buf);
+    if (buf != NULL)
+    {
+       lnum = tv_get_lnum_buf(&argvars[1], buf);
+       if (argvars[2].v_type == VAR_UNKNOWN)
+           end = lnum;
+       else
+           end = tv_get_lnum_buf(&argvars[2], buf);
+    }
 
     get_buffer_lines(buf, lnum, end, TRUE, rettv);
 }
index e3d7bb628d957b16e95e5ea7e186f51ddff5f4c8..d6891a81b3df149bd138bab65fc026b77b24902e 100644 (file)
@@ -242,6 +242,8 @@ def Test_getbufline()
   var lines = ['aaa', 'bbb', 'ccc']
   setbufline(buf, 1, lines)
   getbufline('#', 1, '$')->assert_equal(lines)
+  getbufline(-1, '$', '$')->assert_equal([])
+  getbufline(-1, 1, '$')->assert_equal([])
 
   bwipe!
 enddef
index 16e7a9fcd02435265949b3c83e16c8887bd0ad3b..04bc2483d287eb93549a04f355abed2febda8336 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1888,
 /**/
     1887,
 /**/