From d69bd194b9a8f5079e42f4b9f23538435b22424c Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 8 Jan 2009 13:12:06 +0000 Subject: 26260: fix crash failing to assigns scalar to special hash --- ChangeLog | 5 +++++ Src/params.c | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index be531ab47..75b6e3036 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-01-08 Peter Stephenson + + * 26260: Src/params.c: fix crash when failing to assign + scalar to special hash. + 2009-01-06 Peter Stephenson * unposted: Doc/Zsh/mod_stat.yo: fix yodl problem with 26229. diff --git a/Src/params.c b/Src/params.c index 0faf667b9..1a826bff4 100644 --- a/Src/params.c +++ b/Src/params.c @@ -495,10 +495,10 @@ scancountparams(UNUSED(HashNode hn), int flags) static Patprog scanprog; static char *scanstr; static char **paramvals; -static Param foundparam; +static Param foundparam; /**/ -void +static void scanparamvals(HashNode hn, int flags) { struct value v; @@ -538,6 +538,7 @@ scanparamvals(HashNode hn, int flags) --numparamvals; /* Value didn't match, discard key */ } else ++numparamvals; + foundparam = NULL; } /**/ @@ -2270,7 +2271,15 @@ setstrvalue(Value v, char *val) break; case PM_HASHED: { - foundparam->gsu.s->setfn(foundparam, val); + if (foundparam == NULL) + { + zerr("%s: attempt to set associative array to scalar", + v->pm->node.nam); + zsfree(val); + return; + } + else + foundparam->gsu.s->setfn(foundparam, val); } break; } -- cgit 1.4.1