summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/evalwindow.c4
-rw-r--r--src/testdir/test_execute_func.vim22
-rw-r--r--src/version.c2
3 files changed, 28 insertions, 0 deletions
diff --git a/src/evalwindow.c b/src/evalwindow.c
index c8c1442d27..794d6aa0bb 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -1250,9 +1250,11 @@ switch_win_noblock(
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
+ curtab->tp_topframe = topframe;
curtab = tp;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
+ topframe = curtab->tp_topframe;
}
else
goto_tabpage_tp(tp, FALSE, FALSE);
@@ -1294,9 +1296,11 @@ restore_win_noblock(
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
+ curtab->tp_topframe = topframe;
curtab = save_curtab;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
+ topframe = curtab->tp_topframe;
}
else
goto_tabpage_tp(save_curtab, FALSE, FALSE);
diff --git a/src/testdir/test_execute_func.vim b/src/testdir/test_execute_func.vim
index 06049c272a..9146504e5e 100644
--- a/src/testdir/test_execute_func.vim
+++ b/src/testdir/test_execute_func.vim
@@ -3,6 +3,7 @@
source view_util.vim
source check.vim
source vim9.vim
+source term_util.vim
func NestedEval()
let nested = execute('echo "nested\nlines"')
@@ -148,6 +149,27 @@ func Test_win_execute_other_tab()
unlet xyz
endfunc
+func Test_win_execute_on_startup()
+ CheckRunVimInTerminal
+
+ let lines =<< trim END
+ vim9script
+ [repeat('x', &columns)]->writefile('Xfile1')
+ silent tabedit Xfile2
+ var id = win_getid()
+ silent tabedit Xfile3
+ autocmd VimEnter * win_execute(id, 'close')
+ END
+ call writefile(lines, 'XwinExecute')
+ let buf = RunVimInTerminal('-p Xfile1 -Nu XwinExecute', {})
+
+ " this was crashing on exit with EXITFREE defined
+ call StopVimInTerminal(buf)
+
+ call delete('XwinExecute')
+ call delete('Xfile1')
+endfunc
+
func Test_execute_func_with_null()
call assert_equal("", execute(test_null_string()))
call assert_equal("", execute(test_null_list()))
diff --git a/src/version.c b/src/version.c
index 022c161ad1..bca9382318 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3862,
+/**/
3861,
/**/
3860,