aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ennen <brcolow@users.noreply.github.com>2016-10-21 09:55:57 -0700
committerJames McCoy <jamessan@jamessan.com>2016-10-21 12:55:57 -0400
commit82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa (patch)
treed887eeb14dcfcf134bc066d0a819517cfa0d2133
parent6636e2a2598174adbd7c3e25823d35c22f138363 (diff)
downloadrneovim-82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa.tar.gz
rneovim-82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa.tar.bz2
rneovim-82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa.zip
[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
-rw-r--r--src/nvim/version.c2
-rw-r--r--src/nvim/window.c14
2 files changed, 12 insertions, 4 deletions
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)