Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: avoid problem with deleting nameref features in modules
- X-seq: zsh-workers 54704
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: PATCH: avoid problem with deleting nameref features in modules
- Date: Mon, 8 Jun 2026 16:45:54 +0200
- Archived-at: <https://zsh.org/workers/54704>
- List-id: <zsh-workers.zsh.org>
The old code fixes the specific case of zmodload -u zsh/ksh93 but:
% zmodload zsh/ksh93
% echo ${.sh.version}
zsh-5.9.0.3-test-319-g21367ac
% zmodload -F zsh/ksh93 -p:.sh.version
zsh/ksh93: parameter `.sh.version' already deleted
% echo $ZSH_PATCHLEVEL
zsh-5.9.0.3-test-319-g21367ac
This output is pretty confusing until you realize what's going on.
(Which is that deleteparamdef checks if (searchpm == d->pm), fails
because it followed a nameref, and then doesn't delete anything).
By using getnode2 instead, we avoid the problem at the source.
---
I know that nameref stuff is up in the air at the moment, but is there any reason not
to do this?
Src/Modules/ksh93.c | 8 --------
Src/module.c | 2 +-
2 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/Src/Modules/ksh93.c b/Src/Modules/ksh93.c
index 159a4fe7cf..e70c20d715 100644
--- a/Src/Modules/ksh93.c
+++ b/Src/Modules/ksh93.c
@@ -270,14 +270,6 @@ cleanup_(Module m)
deletewrapper(m, wrapper);
- /* Clean up namerefs, otherwise deleteparamdef() is confused */
- for (p = partab; p < partab + sizeof(partab)/sizeof(*partab); ++p) {
- if (p->flags & PM_NAMEREF) {
- HashNode hn = gethashnode2(paramtab, p->name);
- if (hn)
- ((Param)hn)->node.flags &= ~PM_NAMEREF;
- }
- }
return setfeatureenables(m, &module_features, NULL);
}
diff --git a/Src/module.c b/Src/module.c
index 5652a123ee..83a518c442 100644
--- a/Src/module.c
+++ b/Src/module.c
@@ -1127,7 +1127,7 @@ addparamdef(Paramdef d)
int
deleteparamdef(Paramdef d)
{
- Param pm = (Param) paramtab->getnode(paramtab, d->name);
+ Param pm = (Param) paramtab->getnode2(paramtab, d->name);
if (!pm)
return 1;
--
2.38.1
Messages sorted by:
Reverse Date,
Date,
Thread,
Author