diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:11:42 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:11:42 +0000 |
commit | 20d67907c95265356b51dbdce8ecc0c1ede9e66b (patch) | |
tree | 69b0777db02f96555b3a0587cd630025062a7f09 /Src/params.c | |
parent | 2a5a899a55fd2bce10efd01c75a4bec5285aa46c (diff) | |
download | zsh-20d67907c95265356b51dbdce8ecc0c1ede9e66b.tar.gz zsh-20d67907c95265356b51dbdce8ecc0c1ede9e66b.tar.xz zsh-20d67907c95265356b51dbdce8ecc0c1ede9e66b.zip |
zsh-3.1.5-pws-5 zsh-3.1.5-pws-5
Diffstat (limited to 'Src/params.c')
-rw-r--r-- | Src/params.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Src/params.c b/Src/params.c index 89a1ed6a1..3dc7e1a1b 100644 --- a/Src/params.c +++ b/Src/params.c @@ -765,7 +765,7 @@ getarg(char **str, int *inv, Value v, int a2, long *w) } else if (rev) { v->isarr |= SCANPM_WANTVALS; } - if (!down) + if (!down && PM_TYPE(v->pm->flags) == PM_HASHED) v->isarr &= ~SCANPM_MATCHMANY; *inv = ind; } @@ -1534,6 +1534,12 @@ setaparam(char *s, char **val) if (!(v = getvalue(&s, 1))) createparam(t, PM_ARRAY); *ss = '['; + if (PM_TYPE(v->pm->flags) == PM_HASHED) { + zerr("attempt to set slice of associative array", NULL, 0); + freearray(val); + errflag = 1; + return NULL; + } v = NULL; } else { if (!(v = getvalue(&s, 1))) @@ -1571,13 +1577,13 @@ sethparam(char *s, char **val) } if (strchr(s, '[')) { freearray(val); - zerr("attempt to set slice of associative array", NULL, 0); + zerr("nested associative arrays not yet supported", NULL, 0); errflag = 1; return NULL; } else { if (!(v = getvalue(&s, 1))) createparam(t, PM_HASHED); - else if (!(PM_TYPE(v->pm->flags) & (PM_ARRAY|PM_HASHED)) && + else if (!(PM_TYPE(v->pm->flags) & PM_HASHED) && !(v->pm->flags & PM_SPECIAL)) { unsetparam(t); createparam(t, PM_HASHED); |