Problem: Looping over a null list throws an error.
Solution: Skip over the for loop.
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
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1816,
/**/
1815,
/**/