mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
vim-patch:8.2.0137: crash when using win_execute() from a new tab
Problem: Crash when using win_execute() from a new tab.
Solution: Set the tp_*win pointers. (Ozaki Kiichi, closes vim/vim#5512)
a44b3eeafa
This commit is contained in:
parent
ec3524da29
commit
8fecc5fab8
@ -160,7 +160,7 @@ func Test_winfixwidth_on_close()
|
||||
endfunction
|
||||
|
||||
" Test that 'winfixheight' will be respected even there is non-leaf frame
|
||||
fun! Test_winfixheight_non_leaf_frame()
|
||||
func Test_winfixheight_non_leaf_frame()
|
||||
vsplit
|
||||
botright 11new
|
||||
let l:wid = win_getid()
|
||||
@ -173,7 +173,7 @@ fun! Test_winfixheight_non_leaf_frame()
|
||||
endf
|
||||
|
||||
" Test that 'winfixwidth' will be respected even there is non-leaf frame
|
||||
fun! Test_winfixwidth_non_leaf_frame()
|
||||
func Test_winfixwidth_non_leaf_frame()
|
||||
split
|
||||
topleft 11vnew
|
||||
let l:wid = win_getid()
|
||||
@ -184,3 +184,13 @@ fun! Test_winfixwidth_non_leaf_frame()
|
||||
call assert_equal(11, winwidth(l:wid))
|
||||
%bwipe!
|
||||
endf
|
||||
|
||||
func Test_tabwin_close()
|
||||
enew
|
||||
let l:wid = win_getid()
|
||||
tabedit
|
||||
call win_execute(l:wid, 'close')
|
||||
" Should not crash.
|
||||
call assert_true(v:true)
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
@ -3459,6 +3459,9 @@ int win_alloc_first(void)
|
||||
first_tabpage = alloc_tabpage();
|
||||
first_tabpage->tp_topframe = topframe;
|
||||
curtab = first_tabpage;
|
||||
curtab->tp_firstwin = firstwin;
|
||||
curtab->tp_lastwin = lastwin;
|
||||
curtab->tp_curwin = curwin;
|
||||
|
||||
return OK;
|
||||
}
|
||||
@ -3627,6 +3630,8 @@ int win_new_tabpage(int after, char_u *filename)
|
||||
newtp->tp_next = tp->tp_next;
|
||||
tp->tp_next = newtp;
|
||||
}
|
||||
newtp->tp_firstwin = newtp->tp_lastwin = newtp->tp_curwin = curwin;
|
||||
|
||||
win_init_size();
|
||||
firstwin->w_winrow = tabline_height();
|
||||
win_comp_scroll(curwin);
|
||||
|
Loading…
Reference in New Issue
Block a user