diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 439467cf11..2b0f15ee9d 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2277,7 +2277,11 @@ do_one_cmd( if (*ea.cmd == ';') { if (!ea.skip) + { curwin->w_cursor.lnum = ea.line2; + /* don't leave the cursor on an illegal line */ + check_cursor_lnum(); + } } else if (*ea.cmd != ',') break; @@ -2293,9 +2297,6 @@ do_one_cmd( ea.addr_count = 0; } - /* Don't leave the cursor on an illegal line (caused by ';') */ - check_cursor_lnum(); - /* * 5. Parse the command. */ diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index c48a8117f5..96fee0b1c8 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -234,3 +234,10 @@ func Test_remove_char_in_cmdline() call feedkeys(":abc def\\\\"\", 'tx') call assert_equal('"def', @:) endfunc + +func Test_illegal_address() + new + 2;'( + 2;') + quit +endfunc diff --git a/src/version.c b/src/version.c index b21e60a664..2e3cb057e9 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 133, /**/ 132, /**/