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
|
|||
|
|
|