Mercurial > vim
changeset 26187:8e92f01f7226 v8.2.3625
patch 8.2.3625: illegal memory access when C-indenting
Commit: https://github.com/vim/vim/commit/2de9b7c7c8791da8853a9a7ca9c467867465b655
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Nov 19 19:41:13 2021 +0000
patch 8.2.3625: illegal memory access when C-indenting
Problem: Illegal memory access when C-indenting.
Solution: Also set the cursor column.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 19 Nov 2021 20:45:04 +0100 |
parents | f80b615131df |
children | e93ac00a5491 |
files | src/cindent.c src/testdir/test_cindent.vim src/version.c |
diffstat | 3 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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