Mercurial > vim
comparison src/quickfix.c @ 13756:c38f29387245 v8.0.1750
patch 8.0.1750: crash when clearing loccation list in autocommand
commit https://github.com/vim/vim/commit/3b9474b4ad4d85b5396f7f641b436f193dc9d486
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 23 21:29:48 2018 +0200
patch 8.0.1750: crash when clearing loccation list in autocommand
Problem: Crash when clearing loccation list in autocommand.
Solution: Check if "qi" equals "ql_info". (Yegappan Lakshmanan)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 23 Apr 2018 21:30:06 +0200 |
parents | b33f04873475 |
children | aef8ba129a4f |
comparison
equal
deleted
inserted
replaced
13755:5f94d5556dae | 13756:c38f29387245 |
---|---|
5895 long lnum; | 5895 long lnum; |
5896 #ifdef FEAT_MULTI_LANG | 5896 #ifdef FEAT_MULTI_LANG |
5897 char_u *lang; | 5897 char_u *lang; |
5898 #endif | 5898 #endif |
5899 qf_info_T *qi = &ql_info; | 5899 qf_info_T *qi = &ql_info; |
5900 qf_info_T *save_qi; | |
5901 int new_qi = FALSE; | 5900 int new_qi = FALSE; |
5902 win_T *wp; | 5901 win_T *wp; |
5903 char_u *au_name = NULL; | 5902 char_u *au_name = NULL; |
5904 | 5903 |
5905 #ifdef FEAT_MULTI_LANG | 5904 #ifdef FEAT_MULTI_LANG |
5948 if ((qi = ll_new_list()) == NULL) | 5947 if ((qi = ll_new_list()) == NULL) |
5949 return; | 5948 return; |
5950 new_qi = TRUE; | 5949 new_qi = TRUE; |
5951 } | 5950 } |
5952 } | 5951 } |
5953 | |
5954 /* Autocommands may change the list. Save it for later comparison */ | |
5955 save_qi = qi; | |
5956 | 5952 |
5957 regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING); | 5953 regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING); |
5958 regmatch.rm_ic = FALSE; | 5954 regmatch.rm_ic = FALSE; |
5959 if (regmatch.regprog != NULL) | 5955 if (regmatch.regprog != NULL) |
5960 { | 5956 { |
6084 | 6080 |
6085 if (au_name != NULL) | 6081 if (au_name != NULL) |
6086 { | 6082 { |
6087 apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, | 6083 apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, |
6088 curbuf->b_fname, TRUE, curbuf); | 6084 curbuf->b_fname, TRUE, curbuf); |
6089 if (!new_qi && qi != save_qi && qf_find_buf(qi) == NULL) | 6085 if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL) |
6090 /* autocommands made "qi" invalid */ | 6086 /* autocommands made "qi" invalid */ |
6091 return; | 6087 return; |
6092 } | 6088 } |
6093 | 6089 |
6094 /* Jump to first match. */ | 6090 /* Jump to first match. */ |