aboutsummaryrefslogtreecommitdiffstats
path: root/builtins/declare.def
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-11-21 20:49:12 -0500
committerChet Ramey <chet.ramey@case.edu>2011-11-21 20:49:12 -0500
commit89a92869e56aba4e4cab2d639c00a86f0545c862 (patch)
treee1cd4da50318af8ab1f3141d39d4b0b8e1e7c500 /builtins/declare.def
parent17345e5ad288f7543b77b23a25aa380eacc279f2 (diff)
downloadandroid_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.tar.gz
android_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.tar.bz2
android_external_bash-89a92869e56aba4e4cab2d639c00a86f0545c862.zip
Bash-4.0 patchlevel 38
Diffstat (limited to 'builtins/declare.def')
-rw-r--r--builtins/declare.def9
1 files changed, 8 insertions, 1 deletions
diff --git a/builtins/declare.def b/builtins/declare.def
index 9931f5e..bd7d6b6 100644
--- a/builtins/declare.def
+++ b/builtins/declare.def
@@ -295,6 +295,13 @@ declare_internal (list, local_var)
subscript_start = (char *)NULL;
if (t = strchr (name, '[')) /* ] */
{
+ /* If offset != 0 we have already validated any array reference */
+ if (offset == 0 && valid_array_reference (name) == 0)
+ {
+ sh_invalidid (name);
+ assign_error++;
+ NEXT_VARIABLE ();
+ }
subscript_start = t;
*t = '\0';
making_array_special = 1;
@@ -484,7 +491,7 @@ declare_internal (list, local_var)
}
/* declare -a name[[n]] or declare name[n] makes name an indexed
array variable. */
- else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0)
+ else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0)
var = convert_var_to_array (var);
#endif /* ARRAY_VARS */