From 44db8213d38c39877d2148eff6a72f4beccfb94e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 25 Jan 2022 21:26:17 +0000 Subject: [PATCH] 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. --- src/register.c | 2 +- src/testdir/test_visual.vim | 7 +++++++ src/version.c | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/register.c b/src/register.c index d604bae6b0deb..03f7f4ec9604c 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 b2beda08d0aa8..af54615c48a10 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 9dcf34928f8de..a3efb046bdf58 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, /**/