summary refs log tree commit diff
diff options
context:
space:
mode:
authorJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2016-11-15 00:17:35 +0900
committerJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2016-11-15 00:17:35 +0900
commit3fd50d06a12da8b4a9b4201272ca1f08fabd415e (patch)
treebf588d0c591551c8da7f5fcb11fbee3892587a04
parent99acd1e7f48414e34aa08ec8246caa09088861df (diff)
downloadzsh-3fd50d06a12da8b4a9b4201272ca1f08fabd415e.tar.gz
zsh-3fd50d06a12da8b4a9b4201272ca1f08fabd415e.tar.xz
zsh-3fd50d06a12da8b4a9b4201272ca1f08fabd415e.zip
39937: fix a problem introduced by 39886.
$a[i,j] should become an empty array if i>j.
-rw-r--r--ChangeLog5
-rw-r--r--Src/params.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 27e01c232..150430113 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-15  Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
+
+	* 39937: Src/params.c: fix a problem introduced by 39886.
+	$a[i,j] should become an empty array if i>j.
+
 2016-11-14  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* 39906: Src/utils.c: More optimisation of multibyte handling
diff --git a/Src/params.c b/Src/params.c
index 6f587a30a..3c8658cc3 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2292,10 +2292,11 @@ getarrvalue(Value v)
 	v->end += arrlen(s) + 1;
 
     /* Null if 1) array too short, 2) index still negative */
-    if (arrlen_lt(s, v->start) || v->start < 0) {
+    if (v->end <= v->start) {
+	s = arrdup_max(nular, 0);
+    }
+    else if (arrlen_lt(s, v->start) || v->start < 0) {
 	s = arrdup_max(nular, 1);
-    } else if (v->end <= v->start) {
-        s = arrdup_max(nular, 0);
     } else {
         /* Copy to a point before the end of the source array:
          * arrdup_max will copy at most v->end - v->start elements,