mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.0.1408: crash in setqflist()
Problem: Crash in setqflist(). Solution: Check for string to be NULL. (Dominique Pelle, closes #2464)
This commit is contained in:
parent
4af031dbc8
commit
a0ca7d002d
@ -4930,8 +4930,9 @@ qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
|
|||||||
qf_idx = -1;
|
qf_idx = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((di->di_tv.v_type == VAR_STRING)
|
else if (di->di_tv.v_type == VAR_STRING
|
||||||
&& (STRCMP(di->di_tv.vval.v_string, "$") == 0))
|
&& di->di_tv.vval.v_string != NULL
|
||||||
|
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
|
||||||
/* Get the last quickfix list number */
|
/* Get the last quickfix list number */
|
||||||
qf_idx = qi->qf_listcount - 1;
|
qf_idx = qi->qf_listcount - 1;
|
||||||
else
|
else
|
||||||
@ -5226,7 +5227,8 @@ qf_set_properties(qf_info_T *qi, dict_T *what, int action, char_u *title)
|
|||||||
newlist = FALSE; /* use the specified list */
|
newlist = FALSE; /* use the specified list */
|
||||||
}
|
}
|
||||||
else if (di->di_tv.v_type == VAR_STRING
|
else if (di->di_tv.v_type == VAR_STRING
|
||||||
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
|
&& di->di_tv.vval.v_string != NULL
|
||||||
|
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
|
||||||
{
|
{
|
||||||
if (qi->qf_listcount > 0)
|
if (qi->qf_listcount > 0)
|
||||||
qf_idx = qi->qf_listcount - 1;
|
qf_idx = qi->qf_listcount - 1;
|
||||||
|
@ -1428,6 +1428,11 @@ func XquickfixSetListWithAct(cchar)
|
|||||||
call assert_fails("call g:Xsetlist(list1, 0)", 'E928:')
|
call assert_fails("call g:Xsetlist(list1, 0)", 'E928:')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_setqflist_invalid_nr()
|
||||||
|
" The following command used to crash Vim
|
||||||
|
call setqflist([], ' ', {'nr' : $XXX_DOES_NOT_EXIST})
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_quickfix_set_list_with_act()
|
func Test_quickfix_set_list_with_act()
|
||||||
call XquickfixSetListWithAct('c')
|
call XquickfixSetListWithAct('c')
|
||||||
call XquickfixSetListWithAct('l')
|
call XquickfixSetListWithAct('l')
|
||||||
@ -2946,6 +2951,15 @@ func Test_getqflist()
|
|||||||
call Xgetlist_empty_tests('l')
|
call Xgetlist_empty_tests('l')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_getqflist_invalid_nr()
|
||||||
|
" The following commands used to crash Vim
|
||||||
|
cexpr ""
|
||||||
|
call getqflist({'nr' : $XXX_DOES_NOT_EXIST_XXX})
|
||||||
|
|
||||||
|
" Cleanup
|
||||||
|
call setqflist([], 'r')
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Tests for the quickfix/location list changedtick
|
" Tests for the quickfix/location list changedtick
|
||||||
func Xqftick_tests(cchar)
|
func Xqftick_tests(cchar)
|
||||||
call s:setup_commands(a:cchar)
|
call s:setup_commands(a:cchar)
|
||||||
|
@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1408,
|
||||||
/**/
|
/**/
|
||||||
1407,
|
1407,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user