Mercurial > vim
changeset 31714:07480c2f5ea8 v9.0.1189
patch 9.0.1189: invalid memory access with folding and using "L"
Commit: https://github.com/vim/vim/commit/232bdaaca98c34a99ffadf27bf6ee08be6cc8f6a
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 13 14:17:58 2023 +0000
patch 9.0.1189: invalid memory access with folding and using "L"
Problem: Invalid memory access with folding and using "L".
Solution: Prevent the cursor from moving to line zero.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 13 Jan 2023 15:30:04 +0100 |
parents | 6567dd4ba48c |
children | 17953b02214b |
files | src/normal.c src/testdir/test_fold.vim src/version.c |
diffstat | 3 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/normal.c +++ b/src/normal.c @@ -3729,7 +3729,8 @@ nv_scroll(cmdarg_T *cap) { (void)hasFolding(curwin->w_cursor.lnum, &curwin->w_cursor.lnum, NULL); - --curwin->w_cursor.lnum; + if (curwin->w_cursor.lnum > curwin->w_topline) + --curwin->w_cursor.lnum; } } else
--- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -1675,4 +1675,12 @@ func Test_sort_closed_fold() bwipe! endfunc +func Test_indent_with_L_command() + " The "L" command moved the cursor to line zero, causing the text saved for + " undo to use line number -1, which caused trouble for undo later. + new + sil! norm 8R V{zf8=Lu + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab