changeset 12299:f4d00472e617 v8.0.1029

patch 8.0.1029: return value of getqflist() is inconsistent commit https://github.com/vim/vim/commit/da73253a0b908bad03ddcd625fe3fb32008efbf6 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 31 20:58:02 2017 +0200 patch 8.0.1029: return value of getqflist() is inconsistent Problem: Return value of getqflist() is inconsistent. (Lcd47) Solution: Always return an "items" entry.
author Christian Brabandt <cb@256bit.org>
date Thu, 31 Aug 2017 21:00:04 +0200
parents cf4149250bce
children 0214fd92157b
files src/quickfix.c src/testdir/test_quickfix.vim src/version.c
diffstat 3 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4653,6 +4653,11 @@ qf_get_list_from_text(dictitem_T *di, di
 	    || (di->di_tv.v_type == VAR_LIST
 		&& di->di_tv.vval.v_list != NULL))
     {
+	list_T	*l = list_alloc();
+
+	if (l == NULL)
+	    return FAIL;
+
 	qi = (qf_info_T *)alloc((unsigned)sizeof(qf_info_T));
 	if (qi != NULL)
 	{
@@ -4662,17 +4667,13 @@ qf_get_list_from_text(dictitem_T *di, di
 	    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 = list_alloc();
-		if (l != NULL)
-		{
-		    (void)get_errorlist(qi, NULL, 0, l);
-		    dict_add_list(retdict, "items", l);
-		    status = OK;
-		}
+		(void)get_errorlist(qi, NULL, 0, l);
 		qf_free(qi, 0);
 	    }
 	    free(qi);
 	}
+	dict_add_list(retdict, "items", l);
+	status = OK;
     }
 
     return status;
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -2536,7 +2536,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)
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1029,
+/**/
     1028,
 /**/
     1027,