aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/window.c
diff options
context:
space:
mode:
authorAndré Twupack <atwupack@mailbox.org>2014-09-21 00:29:45 +0200
committerAndré Twupack <atwupack@mailbox.org>2014-09-21 10:42:27 +0200
commit2b937fe00d8b0b308cce87aee9f70699f8474c1e (patch)
tree7b3c7cf3597222905f907fe99233120df79ef504 /src/nvim/window.c
parent0ed9f3ec8338783466b0a6ab2661d9a061a436fa (diff)
downloadrneovim-2b937fe00d8b0b308cce87aee9f70699f8474c1e.tar.gz
rneovim-2b937fe00d8b0b308cce87aee9f70699f8474c1e.tar.bz2
rneovim-2b937fe00d8b0b308cce87aee9f70699f8474c1e.zip
vim-patch:7.4.320
Problem: Possible crash when an BufLeave autocommand deletes the buffer. Solution: Check for the window pointer being valid. Postpone freeing the window until autocommands are done. (Yasuhiro Matsumoto) https://code.google.com/p/vim/source/detail?r=v7-4-320
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r--src/nvim/window.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index f5d8edc751..f41a5d8872 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -3679,7 +3679,12 @@ win_free (
if (wp != aucmd_win)
win_remove(wp, tp);
- free(wp);
+ if (autocmd_busy) {
+ wp->w_next = au_pending_free_win;
+ au_pending_free_win = wp;
+ } else {
+ free(wp);
+ }
unblock_autocmds();
}