Problem: Crash on exit with EXITFREE and using win_execute().
Solution: Also save and restore tp_topframe. (issue #9374)
{
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);
{
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);
source view_util.vim
source check.vim
source vim9.vim
+source term_util.vim
func NestedEval()
let nested = execute('echo "nested\nlines"')
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()))
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 3862,
/**/
3861,
/**/