From: Bram Moolenaar Date: Thu, 31 Aug 2017 18:58:02 +0000 (+0200) Subject: patch 8.0.1029: return value of getqflist() is inconsistent X-Git-Tag: v8.0.1029 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da73253a0b908bad03ddcd625fe3fb32008efbf6;p=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. --- diff --git a/src/quickfix.c b/src/quickfix.c index 8277b937e..1082fbd37 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -4653,6 +4653,11 @@ qf_get_list_from_text(dictitem_T *di, dict_T *retdict) || (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, dict_T *retdict) 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; diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 076d583fd..d6b65e339 100644 --- 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) diff --git a/src/version.c b/src/version.c index 37afc3501..fbf175efd 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1029, /**/ 1028, /**/