summaryrefslogtreecommitdiff
path: root/Src/subst.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2011-12-21 22:39:28 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2011-12-21 22:39:28 +0000
commitae146b0fe238a693e51233da1650004c2eb32b19 (patch)
tree6bcbda9f99ac4b8d884a7e5fc7a507f75846da0b /Src/subst.c
parent1ea6009209a7aae69188d70fa3cb7d260346f059 (diff)
downloadzsh-ae146b0fe238a693e51233da1650004c2eb32b19.tar.gz
zsh-ae146b0fe238a693e51233da1650004c2eb32b19.zip
30041: fix bash-style offsets for positional parameters when scalars
Diffstat (limited to 'Src/subst.c')
-rw-r--r--Src/subst.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 4e8ed721d..ea6bf3af2 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -2878,24 +2878,26 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
return NULL;
}
}
- if (horrible_offset_hack) {
- /*
- * As part of the 'orrible hoffset 'ack,
- * (what hare you? Han 'orrible hoffset 'ack,
- * sergeant major), if we are given a ksh/bash/POSIX
- * style positional parameter array which includes
- * offset 0, we use $0.
- */
- if (offset == 0 && isarr) {
- offset_hack_argzero = 1;
- } else if (offset > 0) {
- offset--;
- }
- }
if (isarr) {
- int alen = arrlen(aval), count;
+ int alen, count;
char **srcptr, **dstptr, **newarr;
+ if (horrible_offset_hack) {
+ /*
+ * As part of the 'orrible hoffset 'ack,
+ * (what hare you? Han 'orrible hoffset 'ack,
+ * sergeant major), if we are given a ksh/bash/POSIX
+ * style positional parameter array which includes
+ * offset 0, we use $0.
+ */
+ if (offset == 0) {
+ offset_hack_argzero = 1;
+ } else if (offset > 0) {
+ offset--;
+ }
+ }
+
+ alen = arrlen(aval);
if (offset < 0) {
offset += alen;
if (offset < 0)