patch 8.2.1910: reading past the end of the command line
Problem: Reading past the end of the command line.
Solution: Check for NUL. (closes #7204)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 5e9eeb7..97d4b42 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2958,8 +2958,7 @@
cmod->cmod_save_ei = NULL;
}
- if (cmod->cmod_filter_regmatch.regprog != NULL)
- vim_regfree(cmod->cmod_filter_regmatch.regprog);
+ vim_regfree(cmod->cmod_filter_regmatch.regprog);
if (cmod->cmod_save_msg_silent > 0)
{
@@ -4696,6 +4695,8 @@
{
p += 2;
(void)skip_expr(&p, NULL);
+ if (*p == NUL) // stop at NUL after CTRL-V
+ break;
}
#endif
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 6a84b1c..de3e3a1 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -1832,4 +1832,11 @@
bwipe!
endfunc
+func Test_read_invalid()
+ set encoding=latin1
+ " This was not properly checking for going past the end.
+ call assert_fails('r`=', 'E484')
+ set encoding=utf-8
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ac8155a..04bfc7d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1910,
+/**/
1909,
/**/
1908,