mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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
|
endfunction
|
||||||
|
|
||||||
" Test that 'winfixheight' will be respected even there is non-leaf frame
|
" 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
|
vsplit
|
||||||
botright 11new
|
botright 11new
|
||||||
let l:wid = win_getid()
|
let l:wid = win_getid()
|
||||||
@ -173,7 +173,7 @@ fun! Test_winfixheight_non_leaf_frame()
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
" Test that 'winfixwidth' will be respected even there is non-leaf frame
|
" 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
|
split
|
||||||
topleft 11vnew
|
topleft 11vnew
|
||||||
let l:wid = win_getid()
|
let l:wid = win_getid()
|
||||||
@ -184,3 +184,13 @@ fun! Test_winfixwidth_non_leaf_frame()
|
|||||||
call assert_equal(11, winwidth(l:wid))
|
call assert_equal(11, winwidth(l:wid))
|
||||||
%bwipe!
|
%bwipe!
|
||||||
endf
|
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 = alloc_tabpage();
|
||||||
first_tabpage->tp_topframe = topframe;
|
first_tabpage->tp_topframe = topframe;
|
||||||
curtab = first_tabpage;
|
curtab = first_tabpage;
|
||||||
|
curtab->tp_firstwin = firstwin;
|
||||||
|
curtab->tp_lastwin = lastwin;
|
||||||
|
curtab->tp_curwin = curwin;
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@ -3627,6 +3630,8 @@ int win_new_tabpage(int after, char_u *filename)
|
|||||||
newtp->tp_next = tp->tp_next;
|
newtp->tp_next = tp->tp_next;
|
||||||
tp->tp_next = newtp;
|
tp->tp_next = newtp;
|
||||||
}
|
}
|
||||||
|
newtp->tp_firstwin = newtp->tp_lastwin = newtp->tp_curwin = curwin;
|
||||||
|
|
||||||
win_init_size();
|
win_init_size();
|
||||||
firstwin->w_winrow = tabline_height();
|
firstwin->w_winrow = tabline_height();
|
||||||
win_comp_scroll(curwin);
|
win_comp_scroll(curwin);
|
||||||
|
Loading…
Reference in New Issue
Block a user