mirror of
https://github.com/neovim/neovim.git
synced 2025-10-07 10:26:31 +00:00
vim-patch:8.0.0482
Problem: The setbufvar() function may mess up the window layout. (Kay Z.)
Solution: Do not check the window to be valid if it is NULL.
2c90d51123
This commit is contained in:
31
src/nvim/testdir/test_functions.vim
Normal file
31
src/nvim/testdir/test_functions.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
func Test_setbufvar_options()
|
||||||
|
" This tests that aucmd_prepbuf() and aucmd_restbuf() properly restore the
|
||||||
|
" window layout.
|
||||||
|
call assert_equal(1, winnr('$'))
|
||||||
|
split dummy_preview
|
||||||
|
resize 2
|
||||||
|
set winfixheight winfixwidth
|
||||||
|
let prev_id = win_getid()
|
||||||
|
|
||||||
|
wincmd j
|
||||||
|
let wh = winheight('.')
|
||||||
|
let dummy_buf = bufnr('dummy_buf1', v:true)
|
||||||
|
call setbufvar(dummy_buf, '&buftype', 'nofile')
|
||||||
|
execute 'belowright vertical split #' . dummy_buf
|
||||||
|
call assert_equal(wh, winheight('.'))
|
||||||
|
let dum1_id = win_getid()
|
||||||
|
|
||||||
|
wincmd h
|
||||||
|
let wh = winheight('.')
|
||||||
|
let dummy_buf = bufnr('dummy_buf2', v:true)
|
||||||
|
call setbufvar(dummy_buf, '&buftype', 'nofile')
|
||||||
|
execute 'belowright vertical split #' . dummy_buf
|
||||||
|
call assert_equal(wh, winheight('.'))
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
call win_gotoid(prev_id)
|
||||||
|
bwipe!
|
||||||
|
call win_gotoid(dum1_id)
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
@@ -5377,7 +5377,8 @@ static int check_snapshot_rec(frame_T *sn, frame_T *fr)
|
|||||||
|| (sn->fr_next != NULL
|
|| (sn->fr_next != NULL
|
||||||
&& check_snapshot_rec(sn->fr_next, fr->fr_next) == FAIL)
|
&& check_snapshot_rec(sn->fr_next, fr->fr_next) == FAIL)
|
||||||
|| (sn->fr_child != NULL
|
|| (sn->fr_child != NULL
|
||||||
&& check_snapshot_rec(sn->fr_child, fr->fr_child) == FAIL))
|
&& check_snapshot_rec(sn->fr_child, fr->fr_child) == FAIL)
|
||||||
|
|| (sn->fr_win != NULL && !win_valid(sn->fr_win)))
|
||||||
return FAIL;
|
return FAIL;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user