summaryrefslogtreecommitdiff
path: root/Src/params.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2015-11-23 15:50:13 +0000
committerPeter Stephenson <pws@zsh.org>2015-11-23 15:50:13 +0000
commit58d040fd85a76468c7b31335f82ee62512e535ca (patch)
treebf4fec522bbe3f4a3a84d8775cc00ff66ac7b9f2 /Src/params.c
parent6fe05eac841bcbc0c92e97987904a60a66e63a1d (diff)
downloadzsh-58d040fd85a76468c7b31335f82ee62512e535ca.tar.gz
zsh-58d040fd85a76468c7b31335f82ee62512e535ca.zip
37203: WARN_CREATE_GLOBAL test in wrong place for associative array
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c
index b121bd6ad..602f69f33 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2970,6 +2970,7 @@ sethparam(char *s, char **val)
struct value vbuf;
Value v;
char *t = s;
+ int checkcreate = 0;
if (!isident(s)) {
zerr("not an identifier: %s", s);
@@ -2988,8 +2989,7 @@ sethparam(char *s, char **val)
queue_signals();
if (!(v = fetchvalue(&vbuf, &s, 1, SCANPM_ASSIGNING))) {
createparam(t, PM_HASHED);
- if (isset(WARNCREATEGLOBAL) && locallevel > 0)
- check_warn_create(v->pm, "associative array");
+ checkcreate = isset(WARNCREATEGLOBAL) && locallevel > 0;
} else if (!(PM_TYPE(v->pm->node.flags) & PM_HASHED) &&
!(v->pm->node.flags & PM_SPECIAL)) {
unsetparam(t);
@@ -3002,6 +3002,8 @@ sethparam(char *s, char **val)
unqueue_signals();
return NULL;
}
+ if (checkcreate)
+ check_warn_create(v->pm, "associative array");
setarrvalue(v, val);
unqueue_signals();
return v->pm;