aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-08 09:38:14 -0400
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-08 10:43:30 -0400
commit1790f81f56087e45f24e82fb8d5f99a9e0f59d49 (patch)
tree704526b74328fad6b1743a29b11fafcdf7cf27f7
parent9bf2741ba4dda8f7b0864858daaad52e596dd856 (diff)
downloadrneovim-1790f81f56087e45f24e82fb8d5f99a9e0f59d49.tar.gz
rneovim-1790f81f56087e45f24e82fb8d5f99a9e0f59d49.tar.bz2
rneovim-1790f81f56087e45f24e82fb8d5f99a9e0f59d49.zip
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
-rw-r--r--src/nvim/quickfix.c7
-rw-r--r--src/nvim/testdir/test_quickfix.vim2
2 files changed, 5 insertions, 4 deletions
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)