diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/quickfix.c | 5 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 18 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 8696754baf..269c4d43ca 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -5399,9 +5399,6 @@ void ex_helpgrep(exarg_T *eap) } } - // Autocommands may change the list. Save it for later comparison - qf_info_T *save_qi = qi; - regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING); regmatch.rm_ic = FALSE; if (regmatch.regprog != NULL) { @@ -5499,7 +5496,7 @@ void ex_helpgrep(exarg_T *eap) if (au_name != NULL) { apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, curbuf->b_fname, true, curbuf); - if (!new_qi && qi != save_qi && qf_find_buf(qi) == NULL) { + if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL) { // autocommands made "qi" invalid return; } diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index f51b99c189..a5845c5206 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -2862,13 +2862,13 @@ func Test_qftitle() " :cgetexpr exe "cgetexpr readfile('Xerr')" call assert_equal(":cgetexpr readfile('Xerr')", - \ getqflist({'title' : 1}).title) + \ getqflist({'title' : 1}).title) " :caddexpr call setqflist([], 'f') exe "caddexpr readfile('Xerr')" call assert_equal(":caddexpr readfile('Xerr')", - \ getqflist({'title' : 1}).title) + \ getqflist({'title' : 1}).title) " :cbuffer new Xerr @@ -2968,6 +2968,20 @@ func Test_qfwin_pos() close endfunc +" The following test used to crash Vim +func Test_lhelpgrep_autocmd() + lhelpgrep quickfix + autocmd QuickFixCmdPost * call setloclist(0, [], 'f') + lhelpgrep buffer + call assert_equal('help', &filetype) + call assert_equal(0, getloclist(0, {'nr' : '$'}).nr) + lhelpgrep tabpage + call assert_equal('help', &filetype) + call assert_equal(1, getloclist(0, {'nr' : '$'}).nr) + au! QuickFixCmdPost + new | only +endfunc + " Test to make sure that an empty quickfix buffer is not reused for loading " a normal buffer. func Test_empty_qfbuf() |