mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.1376: accessing invalid memory with put in Visual block mode
Problem: Accessing invalid memory with put in Visual block mode. Solution: Adjust the cursor column if needed.
This commit is contained in:
parent
f77a7f704f
commit
1c73b65229
@ -1928,7 +1928,7 @@ do_put(
|
|||||||
ptr += yanklen;
|
ptr += yanklen;
|
||||||
|
|
||||||
// insert block's trailing spaces only if there's text behind
|
// insert block's trailing spaces only if there's text behind
|
||||||
if ((j < count - 1 || !shortline) && spaces)
|
if ((j < count - 1 || !shortline) && spaces > 0)
|
||||||
{
|
{
|
||||||
vim_memset(ptr, ' ', (size_t)spaces);
|
vim_memset(ptr, ' ', (size_t)spaces);
|
||||||
ptr += spaces;
|
ptr += spaces;
|
||||||
@ -2284,6 +2284,15 @@ error:
|
|||||||
msgmore(nr_lines);
|
msgmore(nr_lines);
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
|
|
||||||
|
// Make sure the cursor is not after the NUL.
|
||||||
|
int len = (int)STRLEN(ml_get_curline());
|
||||||
|
if (curwin->w_cursor.col > len)
|
||||||
|
{
|
||||||
|
if (cur_ve_flags == VE_ALL)
|
||||||
|
curwin->w_cursor.coladd = curwin->w_cursor.col - len;
|
||||||
|
curwin->w_cursor.col = len;
|
||||||
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if (cmdmod.cmod_flags & CMOD_LOCKMARKS)
|
if (cmdmod.cmod_flags & CMOD_LOCKMARKS)
|
||||||
{
|
{
|
||||||
|
@ -231,5 +231,16 @@ func Test_put_visual_mode()
|
|||||||
set selection&
|
set selection&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_put_visual_block_mode()
|
||||||
|
enew
|
||||||
|
exe "norm 0R\<CR>\<C-C>V"
|
||||||
|
sil exe "norm \<C-V>c \<MiddleDrag>"
|
||||||
|
set ve=all
|
||||||
|
sil norm vz=p
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
set ve=
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1376,
|
||||||
/**/
|
/**/
|
||||||
1375,
|
1375,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user