# HG changeset patch # User Christian Brabandt # Date 1495951203 -7200 # Node ID 30b3775addb28e0e2e9082867375d00adae17d72 # Parent d183d629509ec1735921553733cc8104e1772744 patch 8.0.0605: the quickfix cached buffer may become invalid commit https://github.com/vim/vim/commit/6dd4a53502fb4ec1b66104eab1805e7254ad9e41 Author: Bram Moolenaar 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) diff --git a/src/quickfix.c b/src/quickfix.c --- 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. */ diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 605, +/**/ 604, /**/ 603,