summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/params.c15
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;
}