diff options
author | Bart Schaefer <schaefer@zsh.org> | 2023-03-06 19:54:48 -0800 |
---|---|---|
committer | Bart Schaefer <schaefer@zsh.org> | 2023-03-06 19:54:48 -0800 |
commit | 0562be0af8127bb728774de47e4e8851461bd8e2 (patch) | |
tree | 1c7eb42461dfb8c6ed2cdd2a908760e41da23bfc /Src/params.c | |
parent | ac1bf482ba43d4bf68708625e56a42860541d851 (diff) | |
download | zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.gz zsh-0562be0af8127bb728774de47e4e8851461bd8e2.zip |
51509 (+ fix typo): Add ${(!)name} for the referred-to name of a named reference
Extend ${!name} in ksh emulation for same
Diffstat (limited to 'Src/params.c')
-rw-r--r-- | Src/params.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c index c9f4b3017..85eaee609 100644 --- a/Src/params.c +++ b/Src/params.c @@ -2144,7 +2144,10 @@ fetchvalue(Value v, char **pptr, int bracks, int flags) int isvarat; isvarat = (t[0] == '@' && !t[1]); - pm = (Param) paramtab->getnode(paramtab, *t == '0' ? "0" : t); + if (flags & SCANPM_NONAMEREF) + pm = (Param) paramtab->getnode2(paramtab, *t == '0' ? "0" : t); + else + pm = (Param) paramtab->getnode(paramtab, *t == '0' ? "0" : t); if (sav) *s = sav; *pptr = s; @@ -2155,7 +2158,7 @@ fetchvalue(Value v, char **pptr, int bracks, int flags) memset(v, 0, sizeof(*v)); else v = (Value) hcalloc(sizeof *v); - if (pm->node.flags & PM_NAMEREF) { + if ((pm->node.flags & PM_NAMEREF) && !(flags & SCANPM_NONAMEREF)) { char *refname = GETREFNAME(pm); if (refname && *refname) { /* only happens for namerefs pointing to array elements */ |