52 lines
1.4 KiB
Diff
52 lines
1.4 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 c323062..e965266 100644
|
||
--- a/src/testdir/test_visual.vim
|
||
+++ b/src/testdir/test_visual.vim
|
||
@@ -1469,5 +1469,17 @@ func Test_visual_paste_clipboard()
|
||
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
|
||
+
|
||
|
||
" vim: shiftwidth=2 sts=2 expandtab
|
||
diff --git a/src/window.c b/src/window.c
|
||
index 992593b..c91ebbc 100644
|
||
--- a/src/window.c
|
||
+++ b/src/window.c
|
||
@@ -2594,6 +2594,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
|
||
|