0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.2.3862: crash on exit with EXITFREE and using win_execute()

Problem:    Crash on exit with EXITFREE and using win_execute().
Solution:   Also save and restore tp_topframe. (issue #9374)
This commit is contained in:
Bram Moolenaar
2021-12-20 21:35:59 +00:00
parent 39713d3acb
commit dab17a0689
3 changed files with 28 additions and 0 deletions

View File

@@ -1250,9 +1250,11 @@ switch_win_noblock(
{ {
curtab->tp_firstwin = firstwin; curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin; curtab->tp_lastwin = lastwin;
curtab->tp_topframe = topframe;
curtab = tp; curtab = tp;
firstwin = curtab->tp_firstwin; firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin; lastwin = curtab->tp_lastwin;
topframe = curtab->tp_topframe;
} }
else else
goto_tabpage_tp(tp, FALSE, FALSE); goto_tabpage_tp(tp, FALSE, FALSE);
@@ -1294,9 +1296,11 @@ restore_win_noblock(
{ {
curtab->tp_firstwin = firstwin; curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin; curtab->tp_lastwin = lastwin;
curtab->tp_topframe = topframe;
curtab = save_curtab; curtab = save_curtab;
firstwin = curtab->tp_firstwin; firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin; lastwin = curtab->tp_lastwin;
topframe = curtab->tp_topframe;
} }
else else
goto_tabpage_tp(save_curtab, FALSE, FALSE); goto_tabpage_tp(save_curtab, FALSE, FALSE);

View File

@@ -3,6 +3,7 @@
source view_util.vim source view_util.vim
source check.vim source check.vim
source vim9.vim source vim9.vim
source term_util.vim
func NestedEval() func NestedEval()
let nested = execute('echo "nested\nlines"') let nested = execute('echo "nested\nlines"')
@@ -148,6 +149,27 @@ func Test_win_execute_other_tab()
unlet xyz unlet xyz
endfunc 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() func Test_execute_func_with_null()
call assert_equal("", execute(test_null_string())) call assert_equal("", execute(test_null_string()))
call assert_equal("", execute(test_null_list())) call assert_equal("", execute(test_null_list()))

View File

@@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
3862,
/**/ /**/
3861, 3861,
/**/ /**/