about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2011-01-18 10:29:58 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2011-01-18 10:29:58 +0000
commitaa58d139ff3ffa7258a6273bf279d70f9ee31916 (patch)
treeb0835cc3411f8689289c8c6acd868f78c611685a
parent931a3b6405c28d72ae609703ce63c3e6fdbd8655 (diff)
downloadzsh-aa58d139ff3ffa7258a6273bf279d70f9ee31916.tar.gz
zsh-aa58d139ff3ffa7258a6273bf279d70f9ee31916.tar.xz
zsh-aa58d139ff3ffa7258a6273bf279d70f9ee31916.zip
Mikael: 28637: ${foo:0:} caused crash
-rw-r--r--ChangeLog6
-rw-r--r--Src/subst.c14
-rw-r--r--Test/D04parameter.ztst5
3 files changed, 18 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index aac660046..90eed33df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-18  Peter Stephenson  <pws@csr.com>
+
+	* Mikael: 28637: Src/subst.c: ${foo:0:} caused crash.
+
 2011-01-17  Peter Stephenson  <pws@csr.com>
 
 	* Atom Smasher: users/15715: Completion/Zsh/Function/_zargs: new
@@ -14143,5 +14147,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5187 $
+* $Revision: 1.5188 $
 *****************************************************
diff --git a/Src/subst.c b/Src/subst.c
index 24d515d06..37d63cabe 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -2814,12 +2814,14 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
 			zerr("invalid length: %s", check_offset);
 			return NULL;
 		    }
-		    length = mathevali(check_offset);
-		    if (errflag)
-			return NULL;
-		    if (length < (zlong)0) {
-			zerr("invalid length: %s", check_offset);
-			return NULL;
+                    if (check_offset) {
+			length = mathevali(check_offset);
+			if (errflag)
+			    return NULL;
+			if (length < (zlong)0) {
+			    zerr("invalid length: %s", check_offset);
+			    return NULL;
+			}
 		    }
 		}
 		if (horrible_offset_hack) {
diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst
index b708b4bd2..c0ad1d29a 100644
--- a/Test/D04parameter.ztst
+++ b/Test/D04parameter.ztst
@@ -1405,3 +1405,8 @@
    printf "%n" '[0]'
 1:Regression test for identifier test
 ?(eval):1: not an identifier: [0]
+
+   str=rts
+   print ${str:0:}
+1:Regression test for missing length after offset
+?(eval):2: unrecognized modifier