summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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