# HG changeset patch # User Bram Moolenaar # Date 1643146203 -3600 # Node ID 123b0747fa10d1c41148f04aca88583ebd6acf08 # Parent c4d24fdb7fe551c2c3c14d6c8ac2b901085ecae0 patch 8.2.4219: reading before the start of the line Commit: https://github.com/vim/vim/commit/44db8213d38c39877d2148eff6a72f4beccfb94e Author: Bram Moolenaar Date: Tue Jan 25 21:26:17 2022 +0000 patch 8.2.4219: reading before the start of the line Problem: Reading before the start of the line. Solution: Check boundary before trying to read the character. diff --git a/src/register.c b/src/register.c --- a/src/register.c +++ b/src/register.c @@ -1474,7 +1474,7 @@ yank_copy_line(struct block_def *bd, lon { int s = bd->textlen + bd->endspaces; - while (VIM_ISWHITE(*(bd->textstart + s - 1)) && s > 0) + while (s > 0 && VIM_ISWHITE(*(bd->textstart + s - 1))) { s = s - (*mb_head_off)(bd->textstart, bd->textstart + s - 1) - 1; pnew--; diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1247,6 +1247,13 @@ func Test_visual_put_blockedit_zy_and_zp bw! endfunc +func Test_visual_block_yank_zy() + new + " this was reading before the start of the line + exe "norm o\\\zy" + bwipe! +endfunc + func Test_visual_block_with_virtualedit() CheckScreendump diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4219, +/**/ 4218, /**/ 4217,