aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVVKot <volodymyr.kot.ua@gmail.com>2021-12-19 11:06:16 +0000
committerzeertzjq <zeertzjq@outlook.com>2022-03-13 13:17:28 +0800
commitff48e61ec9ce0fed62b31609c2a83caaa862ccba (patch)
tree8a3581dede8900e36a009bc086a503fb1e87fbe8 /src
parentc5e47e44aa139fa4f9e2f31fe591ddd6b5ca4909 (diff)
downloadrneovim-ff48e61ec9ce0fed62b31609c2a83caaa862ccba.tar.gz
rneovim-ff48e61ec9ce0fed62b31609c2a83caaa862ccba.tar.bz2
rneovim-ff48e61ec9ce0fed62b31609c2a83caaa862ccba.zip
vim-patch:8.2.3762: if quickfix buffer is wiped out getqflist() still returns it
Problem: If the quickfix buffer is wiped out getqflist() still returns its number. Solution: Use zero if the buffer is no longer present. (Yegappan Lakshmanan, closes vim/vim#9306) https://github.com/vim/vim/commit/56150da6879a96db1c84c7ec4ceedeb84969f606
Diffstat (limited to 'src')
-rw-r--r--src/nvim/quickfix.c12
-rw-r--r--src/nvim/testdir/test_quickfix.vim7
2 files changed, 16 insertions, 3 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index e12a8bda2b..72fd035cbd 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -6020,12 +6020,18 @@ static int qf_winid(qf_info_T *qi)
}
/// Returns the number of the buffer displayed in the quickfix/location list
-/// window. If there is no buffer associated with the list, then returns 0.
+/// window. If there is no buffer associated with the list or the buffer is
+/// wiped out, then returns 0.
static int qf_getprop_qfbufnr(const qf_info_T *qi, dict_T *retdict)
FUNC_ATTR_NONNULL_ARG(2)
{
- return tv_dict_add_nr(retdict, S_LEN("qfbufnr"),
- (qi == NULL) ? 0 : qi->qf_bufnr);
+ int bufnum = 0;
+
+ if (qi != NULL && buflist_findnr(qi->qf_bufnr) != NULL) {
+ bufnum = qi->qf_bufnr;
+ }
+
+ return tv_dict_add_nr(retdict, S_LEN("qfbufnr"), bufnum);
}
/// Convert the keys in 'what' to quickfix list property flags.
diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim
index 48bafc4b7e..14d13049d9 100644
--- a/src/nvim/testdir/test_quickfix.vim
+++ b/src/nvim/testdir/test_quickfix.vim
@@ -4483,6 +4483,13 @@ func Xqfbuf_test(cchar)
call assert_equal(qfbnum, bufnr(''))
Xclose
+ " When quickfix buffer is wiped out, getqflist() should return 0
+ %bw!
+ Xexpr ""
+ Xopen
+ bw!
+ call assert_equal(0, g:Xgetlist({'qfbufnr': 0}).qfbufnr)
+
if a:cchar == 'l'
%bwipe
" For a location list, when both the file window and the location list