Mercurial > vim
changeset 11443:30b3775addb2 v8.0.0605
patch 8.0.0605: the quickfix cached buffer may become invalid
commit https://github.com/vim/vim/commit/6dd4a53502fb4ec1b66104eab1805e7254ad9e41
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun May 28 07:56:36 2017 +0200
patch 8.0.0605: the quickfix cached buffer may become invalid
Problem: The buffer that quickfix caches for performance may become
invalid. (Daniel Hahler)
Solution: Reset qf_last_bufref in qf_init_ext(). (Daniel Hahler,
closes #1728, closes #1676)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 28 May 2017 08:00:03 +0200 |
parents | d183d629509e |
children | ed1124a576da |
files | src/quickfix.c src/version.c |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/quickfix.c +++ b/src/quickfix.c @@ -158,6 +158,13 @@ static qf_info_T *ll_get_or_alloc_list(w #define GET_LOC_LIST(wp) (IS_LL_WINDOW(wp) ? wp->w_llist_ref : wp->w_llist) /* + * Looking up a buffer can be slow if there are many. Remember the last one + * to make this a lot faster if there are multiple matches in the same file. + */ +static char_u *qf_last_bufname = NULL; +static bufref_T qf_last_bufref = {NULL, 0}; + +/* * Read the errorfile "efile" into memory, line by line, building the error * list. Set the error list's title to qf_title. * Return -1 for error, number of errors for success. @@ -1151,6 +1158,10 @@ qf_init_ext( int retval = -1; /* default: return error flag */ int status; + /* Do not used the cached buffer, it may have been wiped out. */ + vim_free(qf_last_bufname); + qf_last_bufname = NULL; + vim_memset(&state, 0, sizeof(state)); vim_memset(&fields, 0, sizeof(fields)); #ifdef FEAT_MBYTE @@ -1660,13 +1671,6 @@ copy_loclist(win_T *from, win_T *to) } /* - * Looking up a buffer can be slow if there are many. Remember the last one - * to make this a lot faster if there are multiple matches in the same file. - */ -static char_u *qf_last_bufname = NULL; -static bufref_T qf_last_bufref = {NULL, 0}; - -/* * Get buffer number for file "directory/fname". * Also sets the b_has_qf_entry flag. */