mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 23:18:33 +00:00
vim-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. NOTE: In Neovim, buflist_findname_stat() was replaced by buflist_findname_file_id() inc41535d69
.ea3f2e7be4
This commit is contained in:
@@ -1849,7 +1849,8 @@ buf_T *buflist_findname(char_u *ffname)
|
|||||||
static buf_T *buflist_findname_file_id(char_u *ffname, FileID *file_id,
|
static buf_T *buflist_findname_file_id(char_u *ffname, FileID *file_id,
|
||||||
bool file_id_valid)
|
bool file_id_valid)
|
||||||
{
|
{
|
||||||
FOR_ALL_BUFFERS(buf) {
|
// Start at the last buffer, expect to find a match sooner.
|
||||||
|
FOR_ALL_BUFFERS_BACKWARDS(buf) {
|
||||||
if ((buf->b_flags & BF_DUMMY) == 0
|
if ((buf->b_flags & BF_DUMMY) == 0
|
||||||
&& !otherfile_buf(buf, ffname, file_id, file_id_valid)) {
|
&& !otherfile_buf(buf, ffname, file_id, file_id_valid)) {
|
||||||
return buf;
|
return buf;
|
||||||
@@ -1923,7 +1924,7 @@ int buflist_findpat(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
FOR_ALL_BUFFERS(buf) {
|
FOR_ALL_BUFFERS_BACKWARDS(buf) {
|
||||||
if (buf->b_p_bl == find_listed
|
if (buf->b_p_bl == find_listed
|
||||||
&& (!diffmode || diff_mode_buf(buf))
|
&& (!diffmode || diff_mode_buf(buf))
|
||||||
&& buflist_match(®match, buf, false) != NULL) {
|
&& buflist_match(®match, buf, false) != NULL) {
|
||||||
|
@@ -602,7 +602,10 @@ EXTERN buf_T *lastbuf INIT(= NULL); // last buffer
|
|||||||
EXTERN buf_T *curbuf INIT(= NULL); // currently active buffer
|
EXTERN buf_T *curbuf INIT(= NULL); // currently active buffer
|
||||||
|
|
||||||
// Iterates over all buffers in the buffer list.
|
// Iterates over all buffers in the buffer list.
|
||||||
# define FOR_ALL_BUFFERS(buf) for (buf_T *buf = firstbuf; buf != NULL; buf = buf->b_next)
|
#define FOR_ALL_BUFFERS(buf) \
|
||||||
|
for (buf_T *buf = firstbuf; buf != NULL; buf = buf->b_next)
|
||||||
|
#define FOR_ALL_BUFFERS_BACKWARDS(buf) \
|
||||||
|
for (buf_T *buf = lastbuf; buf != NULL; buf = buf->b_prev)
|
||||||
|
|
||||||
/* Flag that is set when switching off 'swapfile'. It means that all blocks
|
/* Flag that is set when switching off 'swapfile'. It means that all blocks
|
||||||
* are to be loaded into memory. Shouldn't be global... */
|
* are to be loaded into memory. Shouldn't be global... */
|
||||||
|
@@ -3778,10 +3778,15 @@ load_dummy_buffer (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* restore curwin/curbuf and a few other things */
|
// Restore curwin/curbuf and a few other things.
|
||||||
aucmd_restbuf(&aco);
|
aucmd_restbuf(&aco);
|
||||||
if (newbuf_to_wipe != NULL && buf_valid(newbuf_to_wipe))
|
if (newbuf_to_wipe != NULL && buf_valid(newbuf_to_wipe)) {
|
||||||
wipe_buffer(newbuf_to_wipe, FALSE);
|
wipe_buffer(newbuf_to_wipe, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add back the "dummy" flag, otherwise buflist_findname_file_id()
|
||||||
|
// won't skip it.
|
||||||
|
newbuf->b_flags |= BF_DUMMY;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -416,8 +416,8 @@ static int included_patches[] = {
|
|||||||
// 2027 NA
|
// 2027 NA
|
||||||
// 2026 NA
|
// 2026 NA
|
||||||
// 2025 NA
|
// 2025 NA
|
||||||
// 2024,
|
2024,
|
||||||
// 2023,
|
2023,
|
||||||
2022,
|
2022,
|
||||||
2021,
|
2021,
|
||||||
// 2020 NA
|
// 2020 NA
|
||||||
|
Reference in New Issue
Block a user