Mercurial > vim
diff src/testdir/test_quickfix.vim @ 8702:39d6e4f2f748 v7.4.1640
commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Mar 23 20:55:42 2016 +0100
patch 7.4.1640
Problem: Crash when an autocommand changes a quickfix list. (Dominique)
Solution: Check wether an entry is still valid. (Yegappan Lakshmanan,
Hirohito Higashi)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 23 Mar 2016 21:00:05 +0100 |
parents | ec78ecf15de7 |
children | 4ce26276caeb |
line wrap: on
line diff
--- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -504,7 +504,7 @@ function Test_locationlist_curwin_was_cl autocmd BufReadCmd t call R(expand("<amatch>")) augroup END - function R(n) + function! R(n) quit endfunc @@ -637,3 +637,45 @@ function! Test_efm1() call delete('Xerrorfile2') call delete('Xtestfile') endfunction + +function XquickfixChangedByAutocmd(cchar) + let Xolder = a:cchar . 'older' + let Xgetexpr = a:cchar . 'getexpr' + let Xrewind = a:cchar . 'rewind' + if a:cchar == 'c' + let Xsetlist = 'setqflist(' + let ErrorNr = 'E925' + function! ReadFunc() + colder + cgetexpr [] + endfunc + else + let Xsetlist = 'setloclist(0,' + let ErrorNr = 'E926' + function! ReadFunc() + lolder + lgetexpr [] + endfunc + endif + + augroup testgroup + au! + autocmd BufReadCmd t call ReadFunc() + augroup END + + bwipe! + let words = [ "a", "b" ] + let qflist = [] + for word in words + call add(qflist, {'filename': 't'}) + exec "call " . Xsetlist . "qflist, '')" + endfor + exec "call assert_fails('" . Xrewind . "', '" . ErrorNr . ":')" + + augroup! testgroup +endfunc + +function Test_quickfix_was_changed_by_autocmd() + call XquickfixChangedByAutocmd('c') + call XquickfixChangedByAutocmd('l') +endfunction