diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:15:04 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:15:04 +0000 |
commit | ba4f5e80ec9d7e145718e79fed6e57a852c86c12 (patch) | |
tree | ae29f2dfb81bb4e20b015610d85ce5f5a2d96eda /Src/params.c | |
parent | 850fb2e7f94b4e0e9fbf3538ad9e3c44c9fed74b (diff) | |
download | zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.tar.gz zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.tar.xz zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.zip |
zsh-3.1.5-pws-8 zsh-3.1.5-pws-8
Diffstat (limited to 'Src/params.c')
-rw-r--r-- | Src/params.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Src/params.c b/Src/params.c index f91a448a1..88b5fdf73 100644 --- a/Src/params.c +++ b/Src/params.c @@ -246,6 +246,10 @@ IPDEF9F("path", &path, "PATH", PM_RESTRICTED), }; #undef BR +#define IS_UNSET_VALUE(V) \ + ((V) && (!(V)->pm || ((V)->pm->flags & PM_UNSET) || \ + !(V)->pm->nam || !*(V)->pm->nam)) + static Param argvparam; /* hash table containing the parameters */ @@ -966,7 +970,7 @@ getindex(char **pptr, Value v) if (*tbrack == Outbrack) *tbrack = ']'; if ((s[0] == '*' || s[0] == '@') && s[1] == ']') { - if (v->isarr && s[0] == '@') + if ((v->isarr || IS_UNSET_VALUE(v)) && s[0] == '@') v->isarr |= SCANPM_ISVAR_AT; v->a = 0; v->b = -1; @@ -1205,6 +1209,8 @@ getarrvalue(Value v) if (!v) return arrdup(nular); + else if (IS_UNSET_VALUE(v)) + return arrdup(&nular[1]); if (v->inv) { char buf[DIGBUFSIZE]; |