diff options
author | Bart Schaefer <schaefer@zsh.org> | 2023-02-12 11:29:10 -0800 |
---|---|---|
committer | Bart Schaefer <schaefer@zsh.org> | 2023-02-12 11:29:10 -0800 |
commit | 3e55a135c10d3582af22a3e6dc616f57ea212df8 (patch) | |
tree | 0a36a3336c938f62686c1b98417484e3941b4111 /Src/Modules/parameter.c | |
parent | 102145b0487ddd7d2a048a0787b79146434d2cd6 (diff) | |
download | zsh-3e55a135c10d3582af22a3e6dc616f57ea212df8.tar.gz zsh-3e55a135c10d3582af22a3e6dc616f57ea212df8.tar.xz zsh-3e55a135c10d3582af22a3e6dc616f57ea212df8.zip |
51374: Expose named references in $parameters, fix substitution error.
Diffstat (limited to 'Src/Modules/parameter.c')
-rw-r--r-- | Src/Modules/parameter.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index 5bf675e2a..a659300fd 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -105,10 +105,15 @@ getpmparameter(UNUSED(HashTable ht), const char *name) pm->node.nam = dupstring(name); pm->node.flags = PM_SCALAR | PM_READONLY; pm->gsu.s = &nullsetscalar_gsu; - if ((rpm = (Param) realparamtab->getnode(realparamtab, name)) && - !(rpm->node.flags & PM_UNSET)) + if ((rpm = (Param) realparamtab->getnode2(realparamtab, name)) && + !(rpm->node.flags & PM_UNSET)) { pm->u.str = paramtypestr(rpm); - else { + if ((rpm->node.flags & PM_NAMEREF) && + (rpm = (Param) realparamtab->getnode(realparamtab, name)) && + !(rpm->node.flags & PM_UNSET)) { + pm->u.str = zhtricat(pm->u.str, "-", paramtypestr(rpm)); + } + } else { pm->u.str = dupstring(""); pm->node.flags |= (PM_UNSET|PM_SPECIAL); } |