aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-03-20 10:56:52 +0100
committerBjörn Linse <bjorn.linse@gmail.com>2019-03-23 20:12:37 +0100
commitae49e8da588a2faed61f506c1e24bcf59fce693a (patch)
treeaf625da6c6033f5578baaaa519a29bc93e5b0ca3 /src
parent3e78319ac608abadd5204e00295dc3ace7e2edd8 (diff)
downloadrneovim-ae49e8da588a2faed61f506c1e24bcf59fce693a.tar.gz
rneovim-ae49e8da588a2faed61f506c1e24bcf59fce693a.tar.bz2
rneovim-ae49e8da588a2faed61f506c1e24bcf59fce693a.zip
window: don't crash when closing two floats in a row
prevwin can be set to the current window. Then we can't jump to it after closing a float.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/window.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index f9a0839702..c25322c162 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -2313,10 +2313,10 @@ int win_close(win_T *win, bool free_buf)
if (!win->w_floating) {
wp = frame2win(win_altframe(win, NULL));
} else {
- if (win_valid(prevwin)) {
+ if (win_valid(prevwin) && prevwin != win) {
wp = prevwin;
} else {
- wp = curtab->tp_firstwin;
+ wp = firstwin;
}
}
@@ -2595,10 +2595,10 @@ win_free_mem (
wp = winframe_remove(win, dirp, tp);
xfree(frp);
} else {
- if (win_valid(prevwin)) {
+ if (win_valid(prevwin) && prevwin != win) {
wp = prevwin;
} else {
- wp = curtab->tp_firstwin;
+ wp = firstwin;
}
}
win_free(win, tp);