diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | 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 <pws@csr.com> + + * 26260: Src/params.c: fix crash when failing to assign + scalar to special hash. + 2009-01-06 Peter Stephenson <pws@csr.com> * 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; } |