Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
[PATCH] Do not export references even when ALLEXPORT is enabled
- X-seq: zsh-workers 54943
- From: Philippe Altherr <philippe.altherr@xxxxxxxxx>
- To: Zsh hackers list <zsh-workers@xxxxxxx>
- Subject: [PATCH] Do not export references even when ALLEXPORT is enabled
- Date: Fri, 10 Jul 2026 14:39:08 +0200
- Arc-authentication-results: i=1; mx.google.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=OvELintz5vh+lQsiDAV1qCc4Arb8dr2zhklC0Vut7o8=; fh=BgAYDYpL6Ne/A5nWEMVJiHiBtrz8Imz3uf26RDwgQX4=; b=HXYiVMdg4hkwtKjpwmuUyWCBIfA9cLP05fPDVWAgncEtKduMm2g7naF3nrzWqC1ouE NtmXFpK6ccnFYU9QCNhdJrEhP1/p8Mju316RZ3s17dMRhD83azrStQdT1WCYOaEbCwnj a6pzN3QbdtJkNKGXaqd54olfst+k7OuEBOy4WIpCZ0hr3B1bbuE30KOhUHNY5L74XbvL 5mS5fTLEdVwwno6RGxOOS8eNKGNEbjaOjfI+reNPWFwx+h/NkNjCmc9Et6Z9zrMNrtkT E0GfvSGn/N7eZ6+syoI70rtTrD2vRqtN+p9A6+l/BFTxBmTGXvRIDmbxtv5hhJb1WFCb +oDA==; darn=zsh.org
- Arc-seal: i=1; a=rsa-sha256; t=1783687160; cv=none; d=google.com; s=arc-20260327; b=K7Q3fFEYXfqO3nQxHplIvvJEC6KqdOd3VjMSNsRwy+WhtJzMaQQ04pnHer+Q2NvM3Y YaovW+ptpWQPqZVvuy9YHgULcXyo6f+wq90v5qH2nkHpylBGACCuhVgXxmdYL6y5l2Qv NlfVG5zvhZkkPb7ypagxKoc65D5hT6bb/EtMvfp1DvEQV1MpwZ2v2yHyRhZTbcIjVVfv TNYpaN/Ur84bJdgyk9UHnNwHFGW3qoCzI9Qn3oPJjPwhdqejhPlVENww5H+cu4z0e+wj r13K8S7hE9XP2wIO2JlA8840GPfUh843E/Qk3KP4oJlozBNTt4U7WHwkWIP4bGt+zwVc 5Gtg==
- Archived-at: <https://zsh.org/workers/54943>
- List-id: <zsh-workers.zsh.org>
References can't be flagged for export:
% typeset -n -x ref=var
typeset: -x not allowed with -n
Nevertheless, references get exported when the option ALLEXPORT is enabled:
% setopt ALLEXPORT
% typeset -n ref=var
% typeset -p ref
export -n ref=var
Philippe
diff --git a/Src/params.c b/Src/params.c
index 8ea053035..7019ec8e0 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1167,7 +1167,7 @@ createparam(char *name, int flags)
paramtab->addnode(paramtab, ztrdup(name), pm);
}
- if (isset(ALLEXPORT) && !(flags & PM_HASHELEM))
+ if (isset(ALLEXPORT) && !(flags & (PM_NAMEREF | PM_HASHELEM)))
flags |= PM_EXPORTED;
} else {
pm = (Param) hcalloc(sizeof *pm);
@@ -2835,7 +2835,8 @@ assignstrvalue(Value v, char *val, int flags)
setscope(v->pm);
if (errflag ||
((!v->pm->env && !(v->pm->node.flags & PM_EXPORTED) &&
- !(isset(ALLEXPORT) && !(v->pm->node.flags & PM_HASHELEM))) ||
+ !(isset(ALLEXPORT) &&
+ !(v->pm->node.flags & (PM_NAMEREF | PM_HASHELEM)))) ||
(v->pm->node.flags & PM_ARRAY) || v->pm->ename))
return;
export_param(v->pm);
diff --git a/Test/K01nameref.ztst b/Test/K01nameref.ztst
index 7281be430..1ed21906f 100644
--- a/Test/K01nameref.ztst
+++ b/Test/K01nameref.ztst
@@ -2392,4 +2392,14 @@ F:converting from association/array to string should work here too
>${refX} : ddd - ddd - ddd
>${var} : aaa - -
+ typeset -n ref1
+ setopt allexport
+ ref1=var
+ typeset -n ref2
+ unsetopt allexport
+ typeset -p ref1 ref2
+0:references are not exported
+>typeset -n ref1=var
+>typeset -n ref2
+
%clean
Messages sorted by:
Reverse Date,
Date,
Thread,
Author