diff options
author | Chet Ramey <chet.ramey@case.edu> | 2011-12-08 20:15:12 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2011-12-08 20:15:12 -0500 |
commit | 824dfe680374170a2f0c2ac257c23c4113bee8d8 (patch) | |
tree | 4e88812ef20335d6bdabe55de1c92c8c89075416 /arrayfunc.c | |
parent | af98a2a636ede9dd4d0e9b1bb49283ad2c228c7f (diff) | |
download | bash-824dfe680374170a2f0c2ac257c23c4113bee8d8.tar.gz |
commit bash-20090903 snapshot
Diffstat (limited to 'arrayfunc.c')
-rw-r--r-- | arrayfunc.c | 7 |
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] != '='))) |