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 | 51524: dependency on zsh/zle for linkage (diff) | |
| download | zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.gz zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.bz2 zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.lz zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.xz zsh-0562be0af8127bb728774de47e4e8851461bd8e2.tar.zst 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 */ |
