[vim] 134/139: patch 7.4.1816 Problem: Looping over a null list throws an error. Solution: Skip over the for loop.
James McCoy
jamessan at debian.org
Fri May 6 04:00:17 UTC 2016
This is an automated email from the git hooks/post-receive script.
jamessan pushed a commit to branch debian/sid
in repository vim.
commit d8585eded6359f1d7e1981e96ae775efd077c638
Author: Bram Moolenaar <Bram at vim.org>
Date: Sun May 1 23:05:53 2016 +0200
patch 7.4.1816
Problem: Looping over a null list throws an error.
Solution: Skip over the for loop.
---
src/eval.c | 7 ++++++-
src/testdir/test_expr.vim | 7 +++++++
src/version.c | 2 ++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/eval.c b/src/eval.c
index fa2f839..83bac72 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -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
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index a726933..2cd9625 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index 3ecf611..cf4e294 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1816,
+/**/
1815,
/**/
1814,
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vim/vim.git
More information about the pkg-vim-maintainers
mailing list