patch 8.0.0324: illegal memory access with a wrong yank range
Problem: Illegal memory access with "1;y".
Solution: Call check_cursor() instead of check_cursor_lnum(). (Dominique
Pelle, closes #1455)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3ee7056..09102b5 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2295,8 +2295,8 @@
if (!ea.skip)
{
curwin->w_cursor.lnum = ea.line2;
- /* don't leave the cursor on an illegal line */
- check_cursor_lnum();
+ /* don't leave the cursor on an illegal line or column */
+ check_cursor();
}
}
else if (*ea.cmd != ',')
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index b2beb68..05beb45 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -289,13 +289,24 @@
call assert_equal('"def', @:)
endfunc
-func Test_illegal_address()
+func Test_illegal_address1()
new
2;'(
2;')
quit
endfunc
+func Test_illegal_address2()
+ call writefile(['c', 'x', ' x', '.', '1;y'], 'Xtest.vim')
+ new
+ source Xtest.vim
+ " Trigger calling validate_cursor()
+ diffsp Xtest.vim
+ quit!
+ bwipe!
+ call delete('Xtest.vim')
+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 a6dbe99..d174d03 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 324,
+/**/
323,
/**/
322,