From: Bram Moolenaar Date: Mon, 11 Oct 2021 14:40:43 +0000 (+0100) Subject: patch 8.2.3494: illegal memory access in utf_head_off X-Git-Tag: v8.2.3494 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b07626d4afa73dd2af0f03c0d59eed25ee159ef9;p=vim patch 8.2.3494: illegal memory access in utf_head_off Problem: Illegal memory access in utf_head_off. Solution: Check cursor position when reselecting the Visual area. (closes #8963) --- diff --git a/src/normal.c b/src/normal.c index 8a4e778bc..9cc2ea924 100644 --- a/src/normal.c +++ b/src/normal.c @@ -5671,8 +5671,7 @@ nv_visual(cmdarg_T *cap) { curwin->w_cursor.lnum += resel_VIsual_line_count * cap->count0 - 1; - if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) - curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; + check_cursor(); } VIsual_mode = resel_VIsual_mode; if (VIsual_mode == 'v') diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim index 10929519b..20eb4b43e 100644 --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1265,5 +1265,25 @@ func Test_visual_block_with_virtualedit() call delete('XTest_block') endfunc +func Test_visual_reselect_with_count() + " this was causing an illegal memory access + let lines =<< trim END + + + + : + r + exe "%norm e3\kr\t" + : + + : + END + call writefile(lines, 'XvisualReselect') + source XvisualReselect + + bwipe! + call delete('XvisualReselect') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index ce1939b0f..f5c8d76a5 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3494, /**/ 3493, /**/