49 lines
1.3 KiB
Diff
49 lines
1.3 KiB
Diff
|
|
From 3d51ce18ab1be4f9f6061568a4e7fabf00b21794 Mon Sep 17 00:00:00 2001
|
|||
|
|
From: Bram Moolenaar <Bram@vim.org>
|
|||
|
|
Date: Fri, 1 Jul 2022 15:26:15 +0100
|
|||
|
|
Subject: [PATCH] patch 9.0.0017: accessing memory beyond the end of the line
|
|||
|
|
|
|||
|
|
Problem: Accessing memory beyond the end of the line.
|
|||
|
|
Solution: Stop Visual mode when closing a window.
|
|||
|
|
---
|
|||
|
|
src/testdir/test_visual.vim | 12 ++++++++++++
|
|||
|
|
src/window.c | 2 ++
|
|||
|
|
2 files changed, 14 insertions(+)
|
|||
|
|
|
|||
|
|
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
|
|||
|
|
index d21f8f1..ebb6f27 100644
|
|||
|
|
--- a/src/testdir/test_visual.vim
|
|||
|
|
+++ b/src/testdir/test_visual.vim
|
|||
|
|
@@ -966,3 +966,15 @@ func Test_visual_block_with_substitute()
|
|||
|
|
bwipe!
|
|||
|
|
endfunc
|
|||
|
|
|
|||
|
|
+func Test_visual_area_adjusted_when_hiding()
|
|||
|
|
+ " The Visual area ended after the end of the line after :hide
|
|||
|
|
+ call setline(1, 'xxx')
|
|||
|
|
+ vsplit Xfile
|
|||
|
|
+ call setline(1, 'xxxxxxxx')
|
|||
|
|
+ norm! $o
|
|||
|
|
+ hid
|
|||
|
|
+ norm! zW
|
|||
|
|
+ bwipe!
|
|||
|
|
+ bwipe!
|
|||
|
|
+endfunc
|
|||
|
|
+
|
|||
|
|
diff --git a/src/window.c b/src/window.c
|
|||
|
|
index d8091f9..e0df540 100644
|
|||
|
|
--- a/src/window.c
|
|||
|
|
+++ b/src/window.c
|
|||
|
|
@@ -2506,6 +2506,8 @@ win_close(win_T *win, int free_buf)
|
|||
|
|
*/
|
|||
|
|
if (wp->w_buffer != curbuf)
|
|||
|
|
{
|
|||
|
|
+ reset_VIsual_and_resel(); // stop Visual mode
|
|||
|
|
+
|
|||
|
|
other_buffer = TRUE;
|
|||
|
|
win->w_closing = TRUE;
|
|||
|
|
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
|
|||
|
|
--
|
|||
|
|
1.8.3.1
|
|||
|
|
|