mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 7.4.1816
Problem: Looping over a null list throws an error. Solution: Skip over the for loop.
This commit is contained in:
@@ -3292,11 +3292,16 @@ eval_for_line(
|
|||||||
if (!skip)
|
if (!skip)
|
||||||
{
|
{
|
||||||
l = tv.vval.v_list;
|
l = tv.vval.v_list;
|
||||||
if (tv.v_type != VAR_LIST || l == NULL)
|
if (tv.v_type != VAR_LIST)
|
||||||
{
|
{
|
||||||
EMSG(_(e_listreq));
|
EMSG(_(e_listreq));
|
||||||
clear_tv(&tv);
|
clear_tv(&tv);
|
||||||
}
|
}
|
||||||
|
else if (l == NULL)
|
||||||
|
{
|
||||||
|
/* a null list is like an empty list: do nothing */
|
||||||
|
clear_tv(&tv);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No need to increment the refcount, it's already set for the
|
/* No need to increment the refcount, it's already set for the
|
||||||
|
@@ -83,3 +83,10 @@ func Test_getreg_empty_list()
|
|||||||
call add(x, 'foo')
|
call add(x, 'foo')
|
||||||
call assert_equal(['foo'], y)
|
call assert_equal(['foo'], y)
|
||||||
endfunc
|
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
|
||||||
|
@@ -753,6 +753,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 */
|
||||||
|
/**/
|
||||||
|
1816,
|
||||||
/**/
|
/**/
|
||||||
1815,
|
1815,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user