# HG changeset patch # User Christian Brabandt # Date 1468175406 -7200 # Node ID c16e207dc465674bb6eccc8360caeab34137072a # Parent 8b737122c03c205ac18c2227d64bc43d55fb23b1 commit https://github.com/vim/vim/commit/ea3f2e7be447a8f0c4436869620f908de5e8ef1e Author: Bram Moolenaar Date: Sun Jul 10 20:27:32 2016 +0200 patch 7.4.2023 Problem: buflist_findname_stat() may find a dummy buffer. Solution: Set the BF_DUMMY flag after loading a dummy buffer. Start finding buffers from the end of the list. diff --git a/src/buffer.c b/src/buffer.c --- a/src/buffer.c +++ b/src/buffer.c @@ -2270,7 +2270,8 @@ buflist_findname_stat( #endif buf_T *buf; - for (buf = firstbuf; buf != NULL; buf = buf->b_next) + /* Start at the last buffer, expect to find a match sooner. */ + for (buf = lastbuf; buf != NULL; buf = buf->b_prev) if ((buf->b_flags & BF_DUMMY) == 0 && !otherfile_buf(buf, ffname #ifdef UNIX , stp @@ -2355,7 +2356,7 @@ buflist_findpat( return -1; } - for (buf = firstbuf; buf != NULL; buf = buf->b_next) + for (buf = lastbuf; buf != NULL; buf = buf->b_prev) if (buf->b_p_bl == find_listed #ifdef FEAT_DIFF && (!diffmode || diff_mode_buf(buf)) @@ -2581,7 +2582,8 @@ buflist_findnr(int nr) if (nr == 0) nr = curwin->w_alt_fnum; - for (buf = firstbuf; buf != NULL; buf = buf->b_next) + /* Assume newer buffers are used more often, start from the end. */ + for (buf = lastbuf; buf != NULL; buf = buf->b_prev) if (buf->b_fnum == nr) return buf; return NULL; diff --git a/src/quickfix.c b/src/quickfix.c --- a/src/quickfix.c +++ b/src/quickfix.c @@ -4292,6 +4292,10 @@ load_dummy_buffer( aucmd_restbuf(&aco); if (newbuf_to_wipe != NULL && buf_valid(newbuf_to_wipe)) wipe_buffer(newbuf_to_wipe, FALSE); + + /* Add back the "dummy" flag, otherwise buflist_findname_stat() won't + * skip it. */ + newbuf->b_flags |= BF_DUMMY; } /* diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2023, +/**/ 2022, /**/ 2021,