Skip to content

Commit

Permalink
patch 8.2.3762: if quickfix buffer is wiped out getqflist() still ret…
Browse files Browse the repository at this point in the history
…urns 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 #9306)
  • Loading branch information
yegappan authored and brammool committed Dec 9, 2021
1 parent a48d4e4 commit 56150da
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/quickfix.c
Expand Up @@ -6793,13 +6793,18 @@ 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(qf_info_T *qi, dict_T *retdict)
{
return dict_add_number(retdict, "qfbufnr",
(qi == NULL) ? 0 : qi->qf_bufnr);
int bufnum = 0;

if (qi != NULL && buflist_findnr(qi->qf_bufnr) != NULL)
bufnum = qi->qf_bufnr;

return dict_add_number(retdict, "qfbufnr", bufnum);
}

/*
Expand Down
7 changes: 7 additions & 0 deletions src/testdir/test_quickfix.vim
Expand Up @@ -4626,6 +4626,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
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -753,6 +753,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3762,
/**/
3761,
/**/
Expand Down

0 comments on commit 56150da

Please sign in to comment.