53 lines
1.4 KiB
Diff
53 lines
1.4 KiB
Diff
From 36343ae0fb7247e060abfd35fb8e4337b33abb4b Mon Sep 17 00:00:00 2001
|
||
From: Bram Moolenaar <Bram@vim.org>
|
||
Date: Sat, 15 Oct 2022 19:04:05 +0100
|
||
Subject: [PATCH] patch 9.0.0765: with a Visual block a put command column may
|
||
go negative
|
||
|
||
Problem: With a Visual block a put command column may go negative.
|
||
Solution: Check that the column does not become negative.
|
||
---
|
||
src/register.c | 2 ++
|
||
src/testdir/test_visual.vim | 12 ++++++++++++
|
||
2 files changed, 14 insertions(+)
|
||
|
||
diff --git a/src/register.c b/src/register.c
|
||
index 30e2001..41089a0 100644
|
||
--- a/src/register.c
|
||
+++ b/src/register.c
|
||
@@ -1945,6 +1945,8 @@ do_put(
|
||
// adjust '] mark
|
||
curbuf->b_op_end.lnum = curwin->w_cursor.lnum - 1;
|
||
curbuf->b_op_end.col = bd.textcol + totlen - 1;
|
||
+ if (curbuf->b_op_end.col < 0)
|
||
+ curbuf->b_op_end.col = 0;
|
||
curbuf->b_op_end.coladd = 0;
|
||
if (flags & PUT_CURSEND)
|
||
{
|
||
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
|
||
index e965266..956a3d7 100644
|
||
--- a/src/testdir/test_visual.vim
|
||
+++ b/src/testdir/test_visual.vim
|
||
@@ -483,6 +483,18 @@ func Test_visual_block_put()
|
||
bw!
|
||
endfunc
|
||
|
||
+func Test_visual_block_put_invalid()
|
||
+ enew!
|
||
+ behave mswin
|
||
+ norm yy
|
||
+ norm v)Ps/^/
|
||
+ " this was causing the column to become negative
|
||
+ silent norm ggv)P
|
||
+
|
||
+ bwipe!
|
||
+ behave xterm
|
||
+endfunc
|
||
+
|
||
" Visual modes (v V CTRL-V) followed by an operator; count; repeating
|
||
func Test_visual_mode_op()
|
||
new
|
||
--
|
||
2.27.0
|
||
|