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 --- Src/params.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Src') 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