# HG changeset patch # User Bram Moolenaar # Date 1655921703 -7200 # Node ID 8408ffd9af6924ff831d3657033e316bd6bd83d4 # Parent e6542b0893758034337cbbe71caf8c8c214cb087 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 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. diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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; } } diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim --- 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 /\\\"\", 'tx') diff --git a/src/version.c b/src/version.c --- 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,