diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/params.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 824052c96..f2390520a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-11-23 Peter Stephenson <p.stephenson@samsung.com> + + * 37203: Src/params.c: WARN_CREATE_GLOBAL test in wrong place + for associative array. + 2015-11-22 Barton E. Schaefer <schaefer@zsh.org> * Matthew Martin: 37201: Completion/Unix/Type/_groups: change 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; |