From 1790f81f56087e45f24e82fb8d5f99a9e0f59d49 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 8 Sep 2018 09:38:14 -0400 Subject: vim-patch:8.0.1029: return value of getqflist() is inconsistent Problem: Return value of getqflist() is inconsistent. (Lcd47) Solution: Always return an "items" entry. https://github.com/vim/vim/commit/da73253a0b908bad03ddcd625fe3fb32008efbf6 --- src/nvim/quickfix.c | 7 ++++--- src/nvim/testdir/test_quickfix.vim | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 1c03bd2d42..ec11e5d849 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -4131,19 +4131,20 @@ static int qf_get_list_from_text(dictitem_T *di, dict_T *retdict) && di->di_tv.vval.v_string != NULL) || (di->di_tv.v_type == VAR_LIST && di->di_tv.vval.v_list != NULL)) { + list_T *l = tv_list_alloc(kListLenMayKnow); qf_info_T *qi = xmalloc(sizeof(*qi)); memset(qi, 0, sizeof(*qi)); qi->qf_refcount++; if (qf_init_ext(qi, 0, NULL, NULL, &di->di_tv, p_efm, true, (linenr_T)0, (linenr_T)0, NULL, NULL) > 0) { - list_T *l = tv_list_alloc(kListLenMayKnow); (void)get_errorlist(qi, NULL, 0, l); - tv_dict_add_list(retdict, S_LEN("items"), l); - status = OK; qf_free(qi, 0); } xfree(qi); + + tv_dict_add_list(retdict, S_LEN("items"), l); + status = OK; } return status; diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index c2c4f0bfdd..c6324b1dc2 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -2518,7 +2518,7 @@ func XgetListFromText(cchar) call assert_equal(30, l[1].lnum) call assert_equal({}, g:Xgetlist({'text' : 10})) - call assert_equal({}, g:Xgetlist({'text' : []})) + call assert_equal([], g:Xgetlist({'text' : []}).items) " Make sure that the quickfix stack is not modified call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr) -- cgit