From: Bram Moolenaar Date: Tue, 25 Jan 2022 21:26:17 +0000 (+0000) Subject: patch 8.2.4219: reading before the start of the line X-Git-Tag: v8.2.4219 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44db8213d38c39877d2148eff6a72f4beccfb94e;p=thirdparty%2Fvim.git 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 index d604bae6b0..03f7f4ec96 100644 --- a/src/register.c +++ b/src/register.c @@ -1474,7 +1474,7 @@ yank_copy_line(struct block_def *bd, long y_idx, int exclude_trailing_space) { 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 index b2beda08d0..af54615c48 100644 --- 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 index 9dcf34928f..a3efb046bd 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4219, /**/ 4218, /**/