changeset 27382:123b0747fa10 v8.2.4219

patch 8.2.4219: reading before the start of the line Commit: https://github.com/vim/vim/commit/44db8213d38c39877d2148eff6a72f4beccfb94e Author: Bram Moolenaar <Bram@vim.org> 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.
author Bram Moolenaar <Bram@vim.org>
date Tue, 25 Jan 2022 22:30:03 +0100
parents c4d24fdb7fe5
children 3086d6127d94
files src/register.c src/testdir/test_visual.vim src/version.c
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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--;
--- 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\<C-T>\<Esc>\<C-V>zy"
+  bwipe!
+endfunc
+
 func Test_visual_block_with_virtualedit()
   CheckScreendump
 
--- 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,