From 82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa Mon Sep 17 00:00:00 2001 From: Michael Ennen Date: Fri, 21 Oct 2016 09:55:57 -0700 Subject: [RFC] vim-patch:7.4.1704 (#5487) vim-patch:7.4.1704 Problem: Using freed memory with "wincmd p". (Dominique Pelle) Solution: Also clear "prevwin" in other tab pages. https://github.com/vim/vim/commit/3dda7db4e1f7c4a8110a1f83001ec36b46693d27 --- src/nvim/version.c | 2 +- src/nvim/window.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/version.c b/src/nvim/version.c index 383a69c3b3..b8dd2c2a47 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -739,7 +739,7 @@ static int included_patches[] = { // 1707, // 1706 NA // 1705 NA - // 1704, + 1704, 1703, // 1702, // 1701, diff --git a/src/nvim/window.c b/src/nvim/window.c index 29c670322a..03a2e9a842 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -278,10 +278,11 @@ newwindow: /* cursor to last accessed (previous) window */ case 'p': case Ctrl_P: - if (prevwin == NULL) + if (!win_valid(prevwin)) { beep_flush(); - else + } else { win_goto(prevwin); + } break; /* exchange current and next window */ @@ -3768,8 +3769,15 @@ win_free ( hash_init(&wp->w_vars->dv_hashtab); unref_var_dict(wp->w_vars); - if (prevwin == wp) + if (prevwin == wp) { prevwin = NULL; + } + FOR_ALL_TABS(ttp) { + if (ttp->tp_prevwin == wp) { + ttp->tp_prevwin = NULL; + } + } + win_free_lsize(wp); for (i = 0; i < wp->w_tagstacklen; ++i) -- cgit