summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-11-19 19:41:13 +0000
committerBram Moolenaar <Bram@vim.org>2021-11-19 19:41:13 +0000
commit2de9b7c7c8791da8853a9a7ca9c467867465b655 (patch)
treea67f2340c90c8ddee4c4dfd111ee913830e82479
parent3ad695328f94e0197e84454f125c7f3464091d0c (diff)
downloadvim-git-8.2.3625.tar.gz
patch 8.2.3625: illegal memory access when C-indentingv8.2.3625
Problem: Illegal memory access when C-indenting. Solution: Also set the cursor column.
-rw-r--r--src/cindent.c10
-rw-r--r--src/testdir/test_cindent.vim12
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 5 deletions
diff --git a/src/cindent.c b/src/cindent.c
index 850a36994..ad3052249 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -1637,10 +1637,10 @@ get_baseclass_amount(int col)
static pos_T *
find_start_brace(void) // XXX
{
- pos_T cursor_save;
- pos_T *trypos;
- pos_T *pos;
- static pos_T pos_copy;
+ pos_T cursor_save;
+ pos_T *trypos;
+ pos_T *pos;
+ static pos_T pos_copy;
cursor_save = curwin->w_cursor;
while ((trypos = findmatchlimit(NULL, '{', FM_BLOCKSTOP, 0)) != NULL)
@@ -1654,7 +1654,7 @@ find_start_brace(void) // XXX
&& (pos = ind_find_start_CORS(NULL)) == NULL) // XXX
break;
if (pos != NULL)
- curwin->w_cursor.lnum = pos->lnum;
+ curwin->w_cursor = *pos;
}
curwin->w_cursor = cursor_save;
return trypos;
diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim
index 3a536c4c8..c097ca766 100644
--- a/src/testdir/test_cindent.vim
+++ b/src/testdir/test_cindent.vim
@@ -5314,4 +5314,16 @@ func Test_backslash_at_end_of_line()
bwipe!
endfunc
+func Test_find_brace_backwards()
+ " this was looking beyond the end of the line
+ new
+ norm R/*
+ norm o0{
+ norm o//
+ norm V{=
+ call assert_equal(['/*', ' 0{', '//'], getline(1, 3))
+ bwipe!
+endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 7cadcebf0..8e84cbb45 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3625,
+/**/
3624,
/**/
3623,