1
0
forked from aniani/vim

patch 7.4.1816

Problem:    Looping over a null list throws an error.
Solution:   Skip over the for loop.
This commit is contained in:
Bram Moolenaar
2016-05-01 23:05:53 +02:00
parent 9a3b3311d2
commit d8585eded6
3 changed files with 15 additions and 1 deletions

View File

@@ -3292,11 +3292,16 @@ eval_for_line(
if (!skip)
{
l = tv.vval.v_list;
if (tv.v_type != VAR_LIST || l == NULL)
if (tv.v_type != VAR_LIST)
{
EMSG(_(e_listreq));
clear_tv(&tv);
}
else if (l == NULL)
{
/* a null list is like an empty list: do nothing */
clear_tv(&tv);
}
else
{
/* No need to increment the refcount, it's already set for the

View File

@@ -83,3 +83,10 @@ func Test_getreg_empty_list()
call add(x, 'foo')
call assert_equal(['foo'], y)
endfunc
func Test_loop_over_null_list()
let null_list = submatch(1, 1)
for i in null_list
call assert_true(0, 'should not get here')
endfor
endfunc

View File

@@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1816,
/**/
1815,
/**/