0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.0327: crash when opening and closing two popup terminal windows

Problem:    Crash when opening and closing two popup terminal windows.
Solution:   Check that prevwin is valid. (closes #5707)
This commit is contained in:
Bram Moolenaar
2020-02-28 19:11:18 +01:00
parent d5aec0ced1
commit 80ae880f5f
3 changed files with 38 additions and 3 deletions

View File

@@ -2114,9 +2114,31 @@ popup_close_and_callback(win_T *wp, typval_T *arg)
#ifdef FEAT_TERMINAL
if (wp == curwin && curbuf->b_term != NULL)
{
// Closing popup window with a terminal: put focus back on the previous
// window.
win_enter(prevwin, FALSE);
win_T *owp;
// Closing popup window with a terminal: put focus back on the first
// that works:
// - another popup window with a terminal
// - the previous window
// - the first one.
for (owp = first_popupwin; owp != NULL; owp = owp->w_next)
if (owp != curwin && owp->w_buffer->b_term != NULL)
break;
if (owp != NULL)
win_enter(owp, FALSE);
else
{
for (owp = curtab->tp_first_popupwin; owp != NULL;
owp = owp->w_next)
if (owp != curwin && owp->w_buffer->b_term != NULL)
break;
if (owp != NULL)
win_enter(owp, FALSE);
else if (win_valid(prevwin))
win_enter(prevwin, FALSE);
else
win_enter(firstwin, FALSE);
}
}
#endif