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 d604bae..03f7f4e 100644
--- a/src/register.c
+++ b/src/register.c
@@ -1474,7 +1474,7 @@
{
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 b2beda0..af54615 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -1247,6 +1247,13 @@
bw!
endfunc
+func Test_visual_block_yank_zy()
+ new
+ " this was reading before the start of the line
+ exe "norm o\<C-T>\<Esc>\<C-V>zy"
+ bwipe!
+endfunc
+
func Test_visual_block_with_virtualedit()
CheckScreendump
diff --git a/src/version.c b/src/version.c
index 9dcf349..a3efb04 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4219,
+/**/
4218,
/**/
4217,