From ad3e2aa2157bc779b596d95987a80b28cf6928b9 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 9 Oct 2008 13:46:45 +0000 Subject: 25831: fix empty return values from subscript matches with RC_EXPAND_PARAM --- Src/params.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Src/params.c') diff --git a/Src/params.c b/Src/params.c index 65b3ecff8..71cb2a907 100644 --- a/Src/params.c +++ b/Src/params.c @@ -1810,11 +1810,10 @@ fetchvalue(Value v, char **pptr, int bracks, int flags) /* Overload v->isarr as the flag bits for hashed arrays. */ v->isarr = flags | (isvarat ? SCANPM_ISVAR_AT : 0); /* If no flags were passed, we need something to represent * - * `true' yet differ from an explicit WANTVALS. This is a * - * bit of a hack, but makes some sense: When no subscript * - * is provided, all values are substituted. */ + * `true' yet differ from an explicit WANTVALS. Use a * + * special flag for this case. */ if (!v->isarr) - v->isarr = SCANPM_MATCHMANY; + v->isarr = SCANPM_ARRONLY; } v->pm = pm; v->flags = 0; @@ -2188,7 +2187,8 @@ setstrvalue(Value v, char *val) zsfree(val); return; } - if ((v->pm->node.flags & PM_HASHED) && (v->isarr & SCANPM_MATCHMANY)) { + if ((v->pm->node.flags & PM_HASHED) && + (v->isarr & (SCANPM_MATCHMANY|SCANPM_ARRONLY))) { zerr("%s: attempt to set slice of associative array", v->pm->node.nam); zsfree(val); return; -- cgit 1.4.1