patch 8.1.1433: win_execute() may leave popup window focused

Problem:    Win_execute() may leave popup window focused, eventually leading
            to a crash. (Bjorn Linse)
Solution:   When previous window was closed, go to the first window.
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 29d4c15..d0d27b5 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -105,6 +105,14 @@
   call delete('XtestPopup')
 endfunc
 
+func Test_win_execute_closing_curwin()
+  split
+  let winid = popup_create('some text', {})
+  call win_execute(winid, winnr() .. "close")
+  call assert_equal(1, winnr())
+  popupclear
+endfunc
+
 func Test_popup_with_wrap()
   if !CanRunVimInTerminal()
     return
diff --git a/src/version.c b/src/version.c
index 6bc3d64..b3f7ee9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1433,
+/**/
     1432,
 /**/
     1431,
diff --git a/src/window.c b/src/window.c
index 07c8780..e73a9f4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6573,6 +6573,12 @@
 	curwin = save_curwin;
 	curbuf = curwin->w_buffer;
     }
+#ifdef FEAT_TEXT_PROP
+    else if (bt_popup(curwin->w_buffer))
+	// original window was closed and now we're in a popup window: Go
+	// to the first valid window.
+	win_goto(firstwin);
+#endif
 }
 
 /*