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/params.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/params.c')
-rw-r--r-- | Src/params.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c index 69b7f484f..98950d88f 100644 --- a/Src/params.c +++ b/Src/params.c @@ -2155,7 +2155,7 @@ fetchvalue(Value v, char **pptr, int bracks, int flags) return NULL; if (ss) *ss = sav; - s = ss; + s = dyncat(ss,*pptr); } if (PM_TYPE(pm->node.flags) & (PM_ARRAY|PM_HASHED)) { /* Overload v->isarr as the flag bits for hashed arrays. */ @@ -6170,6 +6170,7 @@ setscope(Param pm) { if (pm->node.flags & PM_NAMEREF) { Param basepm; + struct asgment stop; char *t = pm->u.str ? itype_end(pm->u.str, IIDENT, 0) : NULL; /* Temporarily change nameref to array parameter itself */ @@ -6177,7 +6178,12 @@ setscope(Param pm) *t = 0; else t = 0; - basepm = (Param)resolve_nameref(pm, NULL); + stop.name = ""; + stop.value.scalar = NULL; + stop.flags = PM_NAMEREF; + if (locallevel) + stop.flags |= PM_LOCAL; + basepm = (Param)resolve_nameref(pm, &stop); if (t) { pm->width = t - pm->u.str; *t = '['; |