aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/parser_spec.lua
diff options
context:
space:
mode:
authorfkm3 <frederickmayle@gmail.com>2022-06-09 08:05:36 -0700
committerGitHub <noreply@github.com>2022-06-09 08:05:36 -0700
commitbf327368d8981b2d974908188a72f2b51b2f8e85 (patch)
treea26d50dc4b4bf966178b364ee0504f995ccd7176 /test/functional/treesitter/parser_spec.lua
parent11e0fea8bafaf7693531177c4ebaf733738241f1 (diff)
downloadrneovim-bf327368d8981b2d974908188a72f2b51b2f8e85.tar.gz
rneovim-bf327368d8981b2d974908188a72f2b51b2f8e85.tar.bz2
rneovim-bf327368d8981b2d974908188a72f2b51b2f8e85.zip
fix: segfault in find_tagfunc_tags #18841
fixes #15221 I tried to reproduce with a test, but failed. The below patch is able to cause the out of bound access (I verified by adding a check to the code), but it doesn't seg fault or trigger asan/valgrind errors. ``` diff --git a/src/nvim/testdir/test_tagfunc.vim b/src/nvim/testdir/test_tagfunc.vim index ffc1d63b9..22828a39f 100644 --- a/src/nvim/testdir/test_tagfunc.vim +++ b/src/nvim/testdir/test_tagfunc.vim @@ -117,4 +117,26 @@ func Test_tagfunc_settagstack() delfunc Mytagfunc2 endfunc +func Test_tagfunc_settagstack_many() + + func Mytagfunc1(pat, flags, info) + return [{'name' : 'mytag', 'filename' : 'Xtest', 'cmd' : '1'}] + endfunc + set tagfunc=Mytagfunc1 + call writefile([''], 'Xtest') + + for i in range(0,20) + let pos = [bufnr()] + getcurpos()[1:] + let newtag = [{'tagname' : 'mytag' + i, 'from' : pos}] + call settagstack(1, {'items' : newtag}, 'a') + call settagstack(1, {'curidx' : 21}) + endfor + + tag + + call delete('Xtest') + set tagfunc& + delfunc Mytagfunc1 +endfunc ```
Diffstat (limited to 'test/functional/treesitter/parser_spec.lua')
0 files changed, 0 insertions, 0 deletions