0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 8.2.3950: going beyond the end of the line with /\%V

Problem:    Going beyond the end of the line with /\%V.
Solution:   Check for valid column in getvcol().
This commit is contained in:
Bram Moolenaar
2021-12-30 15:29:18 +00:00
parent 4c13e5e676
commit 94f3192b03
3 changed files with 19 additions and 4 deletions

View File

@@ -1240,10 +1240,15 @@ getvcol(
posptr = NULL; // continue until the NUL
else
{
// Special check for an empty line, which can happen on exit, when
// ml_get_buf() always returns an empty string.
if (*ptr == NUL)
pos->col = 0;
colnr_T i;
// In a few cases the position can be beyond the end of the line.
for (i = 0; i < pos->col; ++i)
if (ptr[i] == NUL)
{
pos->col = i;
break;
}
posptr = ptr + pos->col;
if (has_mbyte)
// always start on the first byte

View File

@@ -1053,4 +1053,12 @@ func Test_using_visual_position()
bwipe!
endfunc
func Test_using_invalid_visual_position()
" this was going beyond the end of the line
new
exe "norm 0o000\<Esc>0\<C-V>$s0"
/\%V
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3950,
/**/
3949,
/**/