changeset 16521:a7299d144bb9 v8.1.1264

patch 8.1.1264: crash when closing window from WinBar click commit https://github.com/vim/vim/commit/d2fad67e3eb71f48d23f283ef8e7b7ddf4ee180f Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 4 16:55:25 2019 +0200 patch 8.1.1264: crash when closing window from WinBar click Problem: Crash when closing window from WinBar click. (Ben Jackson) Solution: Check that window pointer is still valid. (closes https://github.com/vim/vim/issues/4337)
author Bram Moolenaar <Bram@vim.org>
date Sat, 04 May 2019 17:00:06 +0200
parents af4e7f81a890
children 5da0fe072719
files src/menu.c src/version.c
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/menu.c
+++ b/src/menu.c
@@ -2488,7 +2488,7 @@ winbar_click(win_T *wp, int col)
 
 	if (col >= item->wb_startcol && col <= item->wb_endcol)
 	{
-	    win_T *save_curwin = NULL;
+	    win_T   *save_curwin = NULL;
 	    pos_T   save_visual = VIsual;
 	    int	    save_visual_active = VIsual_active;
 	    int	    save_visual_select = VIsual_select;
@@ -2506,9 +2506,10 @@ winbar_click(win_T *wp, int col)
 		check_cursor();
 	    }
 
+	    // Note: the command might close the current window.
 	    execute_menu(NULL, item->wb_menu, -1);
 
-	    if (save_curwin != NULL)
+	    if (save_curwin != NULL && win_valid(save_curwin))
 	    {
 		curwin = save_curwin;
 		curbuf = curwin->w_buffer;
@@ -2518,6 +2519,8 @@ winbar_click(win_T *wp, int col)
 		VIsual_reselect = save_visual_reselect;
 		VIsual_mode = save_visual_mode;
 	    }
+	    if (!win_valid(wp))
+		break;
 	}
     }
 }
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1264,
+/**/
     1263,
 /**/
     1262,