Patch 8.2.4151
Problem:    Reading beyond the end of a line.
Solution:   For block insert only use the offset for correcting the length.
Files:      src/ops.c, src/testdir/test_visual.vim


*** ../vim-8.2.4150/src/ops.c   2022-01-17 17:30:17.333810748 +0000
--- src/ops.c   2022-01-20 12:05:41.775100271 +0000
***************
*** 529,552 ****
        }
  
        if (has_mbyte && spaces > 0)
!       {
!           int off;
  
-           // Avoid starting halfway a multi-byte character.
-           if (b_insert)
-           {
-               off = (*mb_head_off)(oldp, oldp + offset + spaces);
-               spaces -= off;
-               count -= off;
-           }
-           else
-           {
-               // spaces fill the gap, the character that's at the edge moves
-               // right
-               off = (*mb_head_off)(oldp, oldp + offset);
-               offset -= off;
-           }
-       }
        if (spaces < 0)  // can happen when the cursor was moved
            spaces = 0;
  
--- 529,537 ----
        }
  
        if (has_mbyte && spaces > 0)
!           // avoid copying part of a multi-byte character
!           offset -= (*mb_head_off)(oldp, oldp + offset);
  
        if (spaces < 0)  // can happen when the cursor was moved
            spaces = 0;
  
*** ../vim-8.2.4150/src/testdir/test_visual.vim 2022-01-17 17:52:18.107986971 
+0000
--- src/testdir/test_visual.vim 2022-01-20 12:04:12.980940760 +0000
***************
*** 1309,1313 ****
--- 1309,1322 ----
    call delete('XvisualReselect')
  endfunc
  
+ func Test_visual_block_insert_round_off()
+   new
+   " The number of characters are tuned to fill a 4096 byte allocated block,
+   " so that valgrind reports going over the end.
+   call setline(1, ['xxxxx', repeat('0', 1350), "\t", repeat('x', 60)])
+   exe "normal gg0\<C-V>GI" .. repeat('0', 1320) .. "\<Esc>"
+   bwipe!
+ endfunc
+ 
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.4150/src/version.c       2022-01-20 11:27:46.282545377 +0000
--- src/version.c       2022-01-20 12:07:31.400828147 +0000
***************
*** 752,753 ****
--- 752,755 ----
  {   /* Add new patch number below this line */
+ /**/
+     4151,
  /**/

-- 
ARTHUR: Listen, old crone!  Unless you tell us where we can buy a shrubbery,
        my friend and I will ... we will say "Ni!"
CRONE:  Do your worst!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220120121124.388AC1C188D%40moolenaar.net.

Raspunde prin e-mail lui