changeset 6422:9fbb9c60ab41 v7.4.541

updated for version 7.4.541 Problem: Crash when doing a range assign. Solution: Check for NULL poiter. (Yukihiro Nakadaira)
author Bram Moolenaar <bram@vim.org>
date Sun, 07 Dec 2014 00:18:33 +0100
parents 5d89d9b40499
children 946876e24d5d
files src/eval.c src/testdir/test55.in src/testdir/test55.ok src/version.c
diffstat 4 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -2951,7 +2951,7 @@ set_var_lval(lp, endp, rettv, copy, op)
 	/*
 	 * Check whether any of the list items is locked
 	 */
-	for (ri = rettv->vval.v_list->lv_first; ri != NULL; )
+	for (ri = rettv->vval.v_list->lv_first; ri != NULL && ll_li != NULL; )
 	{
 	    if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name))
 		return;
--- a/src/testdir/test55.in
+++ b/src/testdir/test55.in
@@ -401,6 +401,11 @@ let l = [0, 1, 2, 3]
 :  $put =v:exception[:15] . v:exception[-1:-1]
 :endtry
 :$put =string(d)
+:"
+:" test for range assign
+:let l = [0]
+:let l[:] = [1, 2]
+:$put =string(l)
 :endfun
 :"
 :call Test(1, 2, [3, 4], {5: 6})  " This may take a while
--- a/src/testdir/test55.ok
+++ b/src/testdir/test55.ok
@@ -129,6 +129,7 @@ 1
 {'a': {'b': 'B'}}
 Vim(call):E737: a
 {'a': {'b': 'B'}}
+[1, 2]
 Vim(foldopen):E490:
 
 
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    541,
+/**/
     540,
 /**/
     539,