summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-16 18:06:15 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-16 18:06:15 +0100
commit60ae0e71490c97f2871a6344aca61cacf220f813 (patch)
tree0d121e2e77ddcdb1b5e37f5ca68d91d3dfdc899d
parent3c25a8617aad9860a1b179d40a183c638b3b70cc (diff)
downloadvim-git-60ae0e71490c97f2871a6344aca61cacf220f813.tar.gz
patch 8.2.4968: reading past end of the line when C-indentingv8.2.4968
Problem: Reading past end of the line when C-indenting. Solution: Check for NUL.
-rw-r--r--src/cindent.c2
-rw-r--r--src/testdir/test_cindent.vim7
-rw-r--r--src/version.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/cindent.c b/src/cindent.c
index ec88036eb..2d47e641b 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -89,7 +89,7 @@ skip_string(char_u *p)
while (vim_isdigit(p[i - 1])) // '\000'
++i;
}
- if (p[i] == '\'') // check for trailing '
+ if (p[i - 1] != NUL && p[i] == '\'') // check for trailing '
{
p += i;
continue;
diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim
index dbd4aa006..c65a0dab3 100644
--- a/src/testdir/test_cindent.vim
+++ b/src/testdir/test_cindent.vim
@@ -5319,6 +5319,13 @@ func Test_cindent_change_multline()
close!
endfunc
+" This was reading past the end of the line
+func Test_cindent_check_funcdecl()
+ new
+ sil norm o0('\0=L
+ bwipe!
+endfunc
+
func Test_cindent_scopedecls()
new
setl cindent ts=4 sw=4
diff --git a/src/version.c b/src/version.c
index 6359e0304..7397e6fb7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4968,
+/**/
4967,
/**/
4966,