neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit f0889154954f0069e19d4196e3a902499f355ed0
parent 801faeaae263b545afc18b1cb6f2ad14dceb4c23
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu, 23 Jun 2022 06:22:43 +0800

vim-patch:8.2.5150: read past the end of the first line with ":0;'{"

Problem:    Read past the end of the first line with ":0;'{".
Solution:   When on line zero check the column is valid for line one.
https://github.com/vim/vim/commit/f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e

Diffstat:
Msrc/nvim/ex_docmd.c | 5++++-
Msrc/nvim/testdir/test_cmdline.vim | 8++++++++
2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c @@ -2826,10 +2826,13 @@ int parse_cmd_address(exarg_T *eap, char **errormsg, bool silent) curwin->w_cursor.lnum = eap->line2; // Don't leave the cursor on an illegal line or column, but do - // accept zero as address, so 0;/PATTERN/ works correctly. + // accept zero as address, so 0;/PATTERN/ works correctly + // (where zero usually means to use the first line). // Check the cursor position before returning. if (eap->line2 > 0) { check_cursor(); + } else { + check_cursor_col(); } need_check_cursor = true; } diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim @@ -636,6 +636,14 @@ func Test_illegal_address2() call delete('Xtest.vim') endfunc +func Test_mark_from_line_zero() + " this was reading past the end of the first (empty) line + new + norm oxxxx + call assert_fails("0;'(", 'E20:') + bwipe! +endfunc + func Test_cmdline_complete_wildoptions() help call feedkeys(":tag /\<c-a>\<c-b>\"\<cr>", 'tx')