Mercurial > vim
changeset 29263:8408ffd9af69 v8.2.5150
patch 8.2.5150: read past the end of the first line with ":0;'{"
Commit: https://github.com/vim/vim/commit/f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 22 19:08:38 2022 +0100
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 22 Jun 2022 20:15:03 +0200 |
parents | e6542b089375 |
children | 6b6b004c3db4 |
files | src/ex_docmd.c src/testdir/test_cmdline.vim src/version.c |
diffstat | 3 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3411,10 +3411,13 @@ parse_cmd_address(exarg_T *eap, char **e 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; } }
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -808,6 +808,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')