]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.0017: accessing memory beyond the end of the line v9.0.0017
authorBram Moolenaar <Bram@vim.org>
Fri, 1 Jul 2022 14:26:15 +0000 (15:26 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 1 Jul 2022 14:26:15 +0000 (15:26 +0100)
Problem:    Accessing memory beyond the end of the line.
Solution:   Stop Visual mode when closing a window.

src/testdir/test_visual.vim
src/version.c
src/window.c

index c3230623b5237aff21ce63fde38369cabdd770ec..e965266540068bc46eb69008610cb5eceef34e84 100644 (file)
@@ -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! \16$o
+  hid
+  norm! zW
+  bwipe!
+  bwipe!
+endfunc
+
 
 " vim: shiftwidth=2 sts=2 expandtab
index 5b737e1bc68da8c181b3f365a89dbaa76a10a862..5d10909135174b58bbc41940301888fac1ef1131 100644 (file)
@@ -735,6 +735,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    17,
 /**/
     16,
 /**/
index 992593bed9828e2e76ad62ec5f1002f2ab699386..c91ebbcfe579405602ca514909e17ea0fca7b1a7 100644 (file)
@@ -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);