summaryrefslogtreecommitdiff
path: root/Src/loop.c
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@zsh.org>2023-02-12 11:51:41 -0800
committerBart Schaefer <schaefer@zsh.org>2023-02-12 11:51:41 -0800
commit3eed6f70cdfea63cfdc380a4df8382fff38af55d (patch)
treee044d367f65abaa8e63294c4c3cddbb2456397fe /Src/loop.c
parente807ac1157015581c1466407cbe722179244be37 (diff)
downloadzsh-3eed6f70cdfea63cfdc380a4df8382fff38af55d.tar.gz
zsh-3eed6f70cdfea63cfdc380a4df8382fff38af55d.zip
51402: Some ksh/bash features, additional sanity checking
* Add "unset -n" * Allow and enforce "typeset -n -r" for read-only references * "can't change type via subscript reference" error * Better checking for self-referential declarations/assignments * Ksh-style "foo=bar; typeset -n foo" creates foo=bar reference * Support "typeset -n ref; for ref in ..." * Subscripted references use NO_EXEC for safety * References assigned in called scopes reset scope at end * Allow named references to $! $? $$ $- $0 $_
Diffstat (limited to 'Src/loop.c')
-rw-r--r--Src/loop.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Src/loop.c b/Src/loop.c
index 7df379ecf..0f3847541 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -53,7 +53,7 @@ execfor(Estate state, int do_exec)
wordcode code = state->pc[-1];
int iscond = (WC_FOR_TYPE(code) == WC_FOR_COND), ctok = 0, atok = 0;
int last = 0;
- char *name, *str, *cond = NULL, *advance = NULL;
+ char *str, *cond = NULL, *advance = NULL;
zlong val = 0;
LinkList vars = NULL, args = NULL;
int old_simple_pline = simple_pline;
@@ -151,7 +151,7 @@ execfor(Estate state, int do_exec)
int count = 0;
for (node = firstnode(vars); node; incnode(node))
{
- name = (char *)getdata(node);
+ char *name = (char *)getdata(node);
if (!args || !(str = (char *) ugetnode(args)))
{
if (count) {
@@ -165,7 +165,7 @@ execfor(Estate state, int do_exec)
fprintf(xtrerr, "%s=%s\n", name, str);
fflush(xtrerr);
}
- setsparam(name, ztrdup(str));
+ setloopvar(name, ztrdup(str));
count++;
}
if (!count)