Patch 8.0.1750
Problem:    Crash when clearing loccation list in autocommand.
Solution:   Check if "qi" equals "ql_info". (Yegappan Lakshmanan)
Files:      src/quickfix.c, src/testdir/test_quickfix.vim


*** ../vim-8.0.1749/src/quickfix.c      2018-04-16 18:04:45.027723033 +0200
--- src/quickfix.c      2018-04-23 21:26:46.079127560 +0200
***************
*** 5897,5903 ****
      char_u    *lang;
  #endif
      qf_info_T *qi = &ql_info;
-     qf_info_T *save_qi;
      int               new_qi = FALSE;
      win_T     *wp;
      char_u    *au_name =  NULL;
--- 5897,5902 ----
***************
*** 5951,5959 ****
        }
      }
  
-     /* Autocommands may change the list. Save it for later comparison */
-     save_qi = qi;
- 
      regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING);
      regmatch.rm_ic = FALSE;
      if (regmatch.regprog != NULL)
--- 5950,5955 ----
***************
*** 6086,6092 ****
      {
        apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
                                               curbuf->b_fname, TRUE, curbuf);
!       if (!new_qi && qi != save_qi && qf_find_buf(qi) == NULL)
            /* autocommands made "qi" invalid */
            return;
      }
--- 6082,6088 ----
      {
        apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
                                               curbuf->b_fname, TRUE, curbuf);
!       if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL)
            /* autocommands made "qi" invalid */
            return;
      }
*** ../vim-8.0.1749/src/testdir/test_quickfix.vim       2018-04-08 
13:27:35.241518461 +0200
--- src/testdir/test_quickfix.vim       2018-04-23 21:24:51.307907882 +0200
***************
*** 3175,3177 ****
--- 3175,3191 ----
    call delete('Xtest2.txt')
    call setqflist([], 'f')
  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
*** ../vim-8.0.1749/src/version.c       2018-04-23 20:46:11.758227134 +0200
--- src/version.c       2018-04-23 21:27:16.270925624 +0200
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     1750,
  /**/

-- 
Place mark here ->[ ]<- if you want a dirty monitor.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui