diff --git a/src/quickfix.c b/src/quickfix.c index 9626cfa43..ce21661a6 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -157,6 +157,13 @@ static qf_info_T *ll_get_or_alloc_list(win_T *); */ #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. @@ -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 @@ -1659,13 +1670,6 @@ copy_loclist(win_T *from, win_T *to) to->w_llist->qf_curlist = qi->qf_curlist; /* current list */ } -/* - * 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 index bc80ace74..2c5aa06fd 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 605, /**/ 604, /**/