From 58d040fd85a76468c7b31335f82ee62512e535ca Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 23 Nov 2015 15:50:13 +0000 Subject: 37203: WARN_CREATE_GLOBAL test in wrong place for associative array --- ChangeLog | 5 +++++ 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 + + * 37203: Src/params.c: WARN_CREATE_GLOBAL test in wrong place + for associative array. + 2015-11-22 Barton E. Schaefer * 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; -- cgit 1.4.1