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)
diff --git a/src/popupwin.c b/src/popupwin.c
index 4078378..0e0260b 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2114,9 +2114,31 @@
 #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