summaryrefslogtreecommitdiff
path: root/arrayfunc.c
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-12-08 20:15:12 -0500
committerChet Ramey <chet.ramey@case.edu>2011-12-08 20:15:12 -0500
commit824dfe680374170a2f0c2ac257c23c4113bee8d8 (patch)
tree4e88812ef20335d6bdabe55de1c92c8c89075416 /arrayfunc.c
parentaf98a2a636ede9dd4d0e9b1bb49283ad2c228c7f (diff)
downloadbash-824dfe680374170a2f0c2ac257c23c4113bee8d8.tar.gz
commit bash-20090903 snapshot
Diffstat (limited to 'arrayfunc.c')
-rw-r--r--arrayfunc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arrayfunc.c b/arrayfunc.c
index b5941096..218faf3d 100644
--- a/arrayfunc.c
+++ b/arrayfunc.c
@@ -407,6 +407,7 @@ expand_compound_array_assignment (var, value, flags)
return nlist;
}
+/* Callers ensure that VAR is not NULL */
void
assign_compound_array_list (var, nlist, flags)
SHELL_VAR *var;
@@ -431,9 +432,9 @@ assign_compound_array_list (var, nlist, flags)
value. */
if ((flags & ASS_APPEND) == 0)
{
- if (array_p (var) && a)
+ if (a && array_p (var))
array_flush (a);
- else if (assoc_p (var) && h)
+ else if (h && assoc_p (var))
assoc_flush (h);
}
@@ -447,7 +448,7 @@ assign_compound_array_list (var, nlist, flags)
/* We have a word of the form [ind]=value */
if ((list->word->flags & W_ASSIGNMENT) && w[0] == '[')
{
- len = skipsubscript (w, 0, assoc_p (var) != 0);
+ len = skipsubscript (w, 0, (var && assoc_p (var) != 0));
/* XXX - changes for `+=' */
if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '=')))