summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilippe Altherr <philippe.altherr@gmail.com>2026-07-19 13:34:52 -0700
committerBart Schaefer <schaefer@zsh.org>2026-07-19 13:34:52 -0700
commit27b7b59af8ba0e6993416436b09e7fb859311fb9 (patch)
tree00ef82bf6a2e827b996d633a3a66a0e1ab480cf5
parent54988: Add comment clarifying test from workers/54792 (diff)
downloadzsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar.gz
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar.bz2
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar.lz
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar.xz
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.tar.zst
zsh-27b7b59af8ba0e6993416436b09e7fb859311fb9.zip
54809: ZLE specials are always in realparamtab and can't be namerefs
-rw-r--r--Src/Zle/compctl.c6
-rw-r--r--Src/Zle/complete.c13
-rw-r--r--Src/Zle/compresult.c2
-rw-r--r--Src/Zle/zle_main.c2
-rw-r--r--Src/Zle/zle_params.c5
-rw-r--r--Src/Zle/zle_thingy.c3
-rw-r--r--Src/Zle/zle_tricky.c13
7 files changed, 22 insertions, 22 deletions
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index c66bca888..347f5532c 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -3664,7 +3664,7 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
dumphashtable(cmdnamtab, -3);
/* And parameter names if autocd and cdablevars are set. */
if (isset(AUTOCD) && isset(CDABLEVARS))
- dumphashtable(paramtab, -4);
+ dumphashtable(realparamtab, -4);
}
oaw = addwhat = (cc->mask & CC_QUOTEFLAG) ? -2 : CC_QUOTEFLAG;
@@ -3676,7 +3676,7 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
dumphashtable(optiontab, addwhat);
if (cc->mask & CC_VARS) {
/* And parameter names. */
- dumphashtable(paramtab, -9);
+ dumphashtable(realparamtab, -9);
addwhat = oaw;
}
if (cc->mask & CC_BINDINGS) {
@@ -3843,7 +3843,7 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
if ((t = cc->mask & (CC_ARRAYS | CC_INTVARS | CC_ENVVARS | CC_SCALARS |
CC_READONLYS | CC_SPECIALS | CC_PARAMS)))
/* Add various flavours of parameters. */
- dumphashtable(paramtab, t);
+ dumphashtable(realparamtab, t);
if ((t = cc->mask & CC_SHFUNCS))
/* Add shell functions. */
dumphashtable(shfunctab, t | (cc->mask & (CC_DISCMDS|CC_EXCMDS)));
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index 3643bf72f..96d58d380 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -1314,15 +1314,14 @@ addcompparams(struct compparam *cp, Param *pp)
Param pm = createparam(cp->name,
cp->type |PM_SPECIAL|PM_REMOVABLE|PM_LOCAL);
if (!pm)
- pm = (Param) paramtab->getnode(paramtab, cp->name);
- DPUTS(!pm, "param not set in addcompparams");
+ pm = (Param) paramtab->getnode2(paramtab, cp->name);
+ DPUTS1(!pm, "param %s not set in addcompparams", cp->name);
*pp = pm;
pm->level = locallevel + 1;
if ((pm->u.data = cp->var)) {
switch(PM_TYPE(cp->type)) {
case PM_SCALAR:
- case PM_NAMEREF:
pm->gsu.s = &compvarscalar_gsu;
break;
case PM_INTEGER:
@@ -1347,23 +1346,21 @@ void
makecompparams(void)
{
Param cpm;
- HashTable tht;
addcompparams(comprparams, comprpms);
if (!(cpm = createparam(
COMPSTATENAME,
PM_SPECIAL|PM_REMOVABLE|PM_SINGLE|PM_LOCAL|PM_HASHED)))
- cpm = (Param) paramtab->getnode(paramtab, COMPSTATENAME);
- DPUTS(!cpm, "param not set in makecompparams");
+ cpm = (Param) realparamtab->getnode2(realparamtab, COMPSTATENAME);
+ DPUTS1(!cpm, "param %s not set in makecompparams", COMPSTATENAME);
comprpms[CPN_COMPSTATE] = cpm;
- tht = paramtab;
cpm->level = locallevel + 1;
cpm->gsu.h = &compstate_gsu;
cpm->u.hash = paramtab = newparamtable(31, COMPSTATENAME);
addcompparams(compkparams, compkpms);
- paramtab = tht;
+ paramtab = realparamtab;
}
/**/
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index f7d74ec7a..e8a6b6422 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -1082,7 +1082,7 @@ do_single(Cmatch m)
} else
n = p + 1;
- if ((pm = (Param) paramtab->getnode(paramtab, n)) &&
+ if ((pm = (Param) realparamtab->getnode(realparamtab, n)) &&
PM_TYPE(pm->node.flags) != PM_SCALAR)
tryit = 0;
}
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index ea88a4247..0e581365f 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -1867,7 +1867,7 @@ bin_vared(char *name, char **args, Options ops, UNUSED(int func))
createparam(args[0], type);
}
queue_signals();
- pm = (Param) paramtab->getnode(paramtab, args[0]);
+ pm = (Param) realparamtab->getnode(realparamtab, args[0]);
if (pm && (PM_TYPE(pm->node.flags) & (PM_ARRAY|PM_HASHED))) {
char **a;
diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c
index 6ac7d4f0a..b828e145c 100644
--- a/Src/Zle/zle_params.c
+++ b/Src/Zle/zle_params.c
@@ -200,14 +200,13 @@ makezleparams(int ro)
Param pm = createparam(zp->name, (zp->type |PM_SPECIAL|PM_REMOVABLE|
PM_LOCAL|(ro ? PM_READONLY : 0)));
if (!pm)
- pm = (Param) paramtab->getnode(paramtab, zp->name);
- DPUTS(!pm, "param not set in makezleparams");
+ pm = (Param) realparamtab->getnode2(realparamtab, zp->name);
+ DPUTS1(!pm, "param %s not set in makezleparams", zp->name);
pm->level = locallevel + 1;
pm->u.data = zp->data;
switch(PM_TYPE(zp->type)) {
case PM_SCALAR:
- case PM_NAMEREF:
pm->gsu.s = zp->gsu;
break;
case PM_ARRAY:
diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c
index f6c521d11..ce9639531 100644
--- a/Src/Zle/zle_thingy.c
+++ b/Src/Zle/zle_thingy.c
@@ -683,7 +683,8 @@ bin_zle_flags(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
if (invicmdmode()) {
startvichange(-1);
if (zmod.flags & (MOD_MULT|MOD_TMULT)) {
- Param pm = (Param) paramtab->getnode(paramtab, "NUMERIC");
+ Param pm = (Param)
+ realparamtab->getnode2(realparamtab, "NUMERIC");
if (pm && pm->node.flags & PM_SPECIAL)
pm->node.flags &= ~PM_UNSET;
}
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index 3e46acdab..8f8776da3 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -437,8 +437,8 @@ checkparams(char *p)
int t0, n, l = strlen(p), e = 0;
struct hashnode *hn;
- for (t0 = paramtab->hsize - 1, n = 0; n < 2 && t0 >= 0; t0--)
- for (hn = paramtab->nodes[t0]; n < 2 && hn; hn = hn->next)
+ for (t0 = realparamtab->hsize - 1, n = 0; n < 2 && t0 >= 0; t0--)
+ for (hn = realparamtab->nodes[t0]; n < 2 && hn; hn = hn->next)
if (pfxlen(p, hn->nam) == l) {
n++;
if ((int)strlen(hn->nam) == l)
@@ -1512,7 +1512,8 @@ get_comp_string(void)
zlemetacs_qsub - wb) {
s = NULL;
inwhat = IN_MATH;
- if ((keypm = (Param) paramtab->getnode(paramtab, varname)) &&
+ if ((keypm = (Param)
+ realparamtab->getnode(realparamtab, varname)) &&
(keypm->node.flags & PM_HASHED))
insubscr = 2;
else
@@ -1612,7 +1613,8 @@ get_comp_string(void)
zsfree(varname);
varname = ztrdup(nb);
*ne = sav;
- if ((keypm = (Param) paramtab->getnode(paramtab, varname)) &&
+ if ((keypm = (Param)
+ realparamtab->getnode(realparamtab, varname)) &&
(keypm->node.flags & PM_HASHED))
insubscr = 2;
}
@@ -1693,7 +1695,8 @@ get_comp_string(void)
if (wptr < sqbr) {
zsfree(varname);
varname = ztrduppfx(wptr, sqbr - wptr);
- if ((keypm = (Param) paramtab->getnode(paramtab, varname)) &&
+ if ((keypm = (Param)
+ realparamtab->getnode(realparamtab, varname)) &&
(keypm->node.flags & PM_HASHED)) {
if (insubscr != 3)
insubscr = 2;