diff options
author | Michael Ennen <brcolow@users.noreply.github.com> | 2016-10-21 09:55:57 -0700 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2016-10-21 12:55:57 -0400 |
commit | 82f30bfeda2f291d3b2f3d8fee79dd9ace42a9aa (patch) | |
tree | d887eeb14dcfcf134bc066d0a819517cfa0d2133 | |
parent | 6636e2a2598174adbd7c3e25823d35c22f138363 (diff) | |
download | rneovim-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.c | 2 | ||||
-rw-r--r-- | src/nvim/window.c | 14 |
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) |