Mercurial > vim
changeset 22679:9fa3f92248f6 v8.2.1888
patch 8.2.1888: Vim9: getbufline(-1, 1, '$') gives an error
Commit: https://github.com/vim/vim/commit/e6e70a10f118ecfa9df2425e8724bc009bd09929
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Oct 22 18:23:38 2020 +0200
patch 8.2.1888: Vim9: getbufline(-1, 1, '$') gives an error
Problem: Vim9: Getbufline(-1, 1, '$') gives an error.
Solution: Return an empty list. (closes https://github.com/vim/vim/issues/7180)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 22 Oct 2020 18:30:04 +0200 |
parents | 5890a367e796 |
children | 4743badca4c2 |
files | src/evalbuffer.c src/testdir/test_vim9_builtin.vim src/version.c |
diffstat | 3 files changed, 14 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/evalbuffer.c +++ b/src/evalbuffer.c @@ -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); }
--- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -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