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

6 views
Skip to first unread message

Christian Brabandt

unread,
Apr 16, 2024, 4:30:13 PM4/16/24
to vim...@googlegroups.com
patch 9.1.0340: Problem: Error with matchaddpos() and empty list

Commit: https://github.com/vim/vim/commit/f7d31adcc22eae852d6e7a5b59e9755ba7b51d35
Author: Christian Brabandt <c...@256bit.org>
Date: Tue Apr 16 22:23:17 2024 +0200

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 <c...@256bit.org>

diff --git a/src/match.c b/src/match.c
index f59c2066a..bc50757b3 100644
--- a/src/match.c
+++ b/src/match.c
@@ -87,7 +87,7 @@ match_add(
m = ALLOC_CLEAR_ONE(matchitem_T);
if (m == NULL)
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);
if (m->mit_pos_array == NULL)
@@ -1294,7 +1294,7 @@ f_matchaddpos(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
return;
}
l = argvars[1].vval.v_list;
- if (l == NULL)
+ if (l == NULL || l->lv_len == 0)
return;

if (argvars[2].v_type != VAR_UNKNOWN)
diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim
index 189615890..eb777912e 100644
--- a/src/testdir/test_match.vim
+++ b/src/testdir/test_match.vim
@@ -307,6 +307,7 @@ func Test_matchaddpos_error()
" Why doesn't the following error have an error code E...?
call assert_fails("call matchaddpos('Error', [{}])", 'E290:')
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_equal(-1, matchaddpos('Search', [[]]))
call assert_fails("call matchaddpos('Search', [[{}]])", 'E728:')
@@ -433,5 +434,4 @@ func Test_match_tab_with_linebreak()
call StopVimInTerminal(buf)
endfunc

-
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 475f288d0..56c779e16 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 340,
/**/
339,
/**/
Reply all
Reply to author
Forward
0 new messages