From f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 22 Jun 2022 19:08:38 +0100 Subject: [PATCH] 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. --- src/ex_docmd.c | 5 ++++- src/testdir/test_cmdline.vim | 8 ++++++++ src/version.c | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 1185cd1550a61..271e7e2466357 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 9c08d138042ab..36853369855ef 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 /\\\"\", 'tx') diff --git a/src/version.c b/src/version.c index 609c95559d347..b947061b3ffea 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 5150, /**/ 5149, /**/