diff options
| author | Philippe Altherr <philippe.altherr@gmail.com> | 2026-06-08 14:46:19 -0700 |
|---|---|---|
| committer | Bart Schaefer <schaefer@zsh.org> | 2026-06-08 14:46:19 -0700 |
| commit | 501d393732f4d2100ed15750f95d984078eafb5e (patch) | |
| tree | 9aa704d6fc01b538251944626911ded90ddfc487 | |
| parent | unposted: fix NULL termination in ksh93 (diff) | |
| download | zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar.gz zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar.bz2 zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar.lz zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar.xz zsh-501d393732f4d2100ed15750f95d984078eafb5e.tar.zst zsh-501d393732f4d2100ed15750f95d984078eafb5e.zip | |
54277: reference loops are detected at create time, remove loop tagging
| -rw-r--r-- | Src/params.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/Src/params.c b/Src/params.c index 1620b2a11..0af508a3f 100644 --- a/Src/params.c +++ b/Src/params.c @@ -6324,19 +6324,11 @@ resolve_nameref_rec(Param pm, const Param stop, int keep_lastref) /* If present, it has to be the end of any chain, see fetchvalue() */ || pm->width || !(refname = GETREFNAME(pm)) || !*refname) return pm; - if (pm->node.flags & PM_TAGGED) { - zerr("%s: invalid self reference", pm->node.nam); - return NULL; - } queue_signals(); if ((pm = (Param)gethashnode2(realparamtab, refname))) { if ((pm = loadparamnode(paramtab, upscope(pm, ref), refname)) && - pm != stop && !(pm->node.flags & PM_UNSET)) { - /* user can't tag a nameref, safe for loop detection */ - ref->node.flags |= PM_TAGGED; + pm != stop && !(pm->node.flags & PM_UNSET)) pm = resolve_nameref_rec(pm, stop, keep_lastref); - ref->node.flags &= ~PM_TAGGED; - } } else if (keep_lastref) pm = ref; unqueue_signals(); |
