1
0
forked from aniani/vim

patch 9.1.0340: Problem: Error with matchaddpos() and empty list

Problem:  Error with matchaddpos() and empty list
          (@rickhow)
Solution: Return early for an empty list

fixes: #14525
closes: #14563

Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt 2024-04-16 22:23:17 +02:00
parent 8560e6cf97
commit f7d31adcc2
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 5 additions and 3 deletions

View File

@ -87,7 +87,7 @@ match_add(
m = ALLOC_CLEAR_ONE(matchitem_T); m = ALLOC_CLEAR_ONE(matchitem_T);
if (m == NULL) if (m == NULL)
return -1; return -1;
if (pos_list != NULL) if (pos_list != NULL && pos_list->lv_len > 0)
{ {
m->mit_pos_array = ALLOC_CLEAR_MULT(llpos_T, pos_list->lv_len); m->mit_pos_array = ALLOC_CLEAR_MULT(llpos_T, pos_list->lv_len);
if (m->mit_pos_array == NULL) if (m->mit_pos_array == NULL)
@ -1294,7 +1294,7 @@ f_matchaddpos(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
return; return;
} }
l = argvars[1].vval.v_list; l = argvars[1].vval.v_list;
if (l == NULL) if (l == NULL || l->lv_len == 0)
return; return;
if (argvars[2].v_type != VAR_UNKNOWN) if (argvars[2].v_type != VAR_UNKNOWN)

View File

@ -307,6 +307,7 @@ func Test_matchaddpos_error()
" Why doesn't the following error have an error code E...? " Why doesn't the following error have an error code E...?
call assert_fails("call matchaddpos('Error', [{}])", 'E290:') call assert_fails("call matchaddpos('Error', [{}])", 'E290:')
call assert_equal(-1, matchaddpos('Error', test_null_list())) call assert_equal(-1, matchaddpos('Error', test_null_list()))
call assert_equal(-1, matchaddpos('Error', []))
call assert_fails("call matchaddpos('Error', [1], [], 1)", 'E745:') call assert_fails("call matchaddpos('Error', [1], [], 1)", 'E745:')
call assert_equal(-1, matchaddpos('Search', [[]])) call assert_equal(-1, matchaddpos('Search', [[]]))
call assert_fails("call matchaddpos('Search', [[{}]])", 'E728:') call assert_fails("call matchaddpos('Search', [[{}]])", 'E728:')
@ -433,5 +434,4 @@ func Test_match_tab_with_linebreak()
call StopVimInTerminal(buf) call StopVimInTerminal(buf)
endfunc endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -704,6 +704,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 */
/**/
340,
/**/ /**/
339, 339,
/**/ /**/