diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-06-22 19:08:38 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-06-22 19:08:38 +0100 |
commit | f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e (patch) | |
tree | 9886e1fdcc55045c09f2ec5bbe32695e1fd9703b | |
parent | 6689df024bce4309ec5884e445738fe07ee4ffcc (diff) |
patch 8.2.5150: read past the end of the first line with ":0;'{"v8.2.5150
Problem: Read past the end of the first line with ":0;'{".
Solution: When on line zero check the column is valid for line one.
-rw-r--r-- | src/ex_docmd.c | 5 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 1185cd1550..271e7e2466 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3411,10 +3411,13 @@ parse_cmd_address(exarg_T *eap, char **errormsg, int 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/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 9c08d13804..3685336985 100644 --- 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') diff --git a/src/version.c b/src/version.c index 609c95559d..b947061b3f 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 5150, +/**/ 5149, /**/ 5148, |