commit bash-20111104 snapshot

This commit is contained in:
Chet Ramey
2012-01-09 08:31:41 -05:00
parent 77638cbf4e
commit 631b20c609
63 changed files with 24544 additions and 127 deletions
+14 -4
View File
@@ -282,6 +282,7 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
if (akey == 0 || *akey == 0)
{
err_badarraysub (name);
FREE (akey);
return ((SHELL_VAR *)NULL);
}
entry = bind_assoc_variable (entry, vname, akey, value, flags);
@@ -534,6 +535,7 @@ assign_compound_array_list (var, nlist, flags)
if (akey == 0 || *akey == 0)
{
err_badarraysub (w);
FREE (akey);
continue;
}
}
@@ -700,6 +702,7 @@ unbind_array_element (var, sub)
if (akey == 0 || *akey == 0)
{
builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg));
FREE (akey);
return -1;
}
assoc_remove (assoc_cell (var), akey);
@@ -935,6 +938,7 @@ array_value_internal (s, quoted, flags, rtype, indp)
return ((char *)NULL); /* error message already printed */
/* [ */
akey = 0;
if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
{
if (rtype)
@@ -964,11 +968,11 @@ array_value_internal (s, quoted, flags, rtype, indp)
if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
{
temp = string_list_dollar_star (l);
retval = quote_string (temp);
retval = quote_string (temp); /* XXX - leak here */
free (temp);
}
else /* ${name[@]} or unquoted ${name[*]} */
retval = string_list_dollar_at (l, quoted);
retval = string_list_dollar_at (l, quoted); /* XXX - leak here */
dispose_words (l);
}
@@ -1001,11 +1005,17 @@ array_value_internal (s, quoted, flags, rtype, indp)
akey = expand_assignment_string_to_string (t, 0); /* [ */
t[len - 1] = ']';
if (akey == 0 || *akey == 0)
INDEX_ERROR();
{
FREE (akey);
INDEX_ERROR();
}
}
if (var == 0 || value_cell (var) == 0) /* XXX - check invisible_p(var) ? */
return ((char *)NULL);
{
FREE (akey);
return ((char *)NULL);
}
if (array_p (var) == 0 && assoc_p (var) == 0)
return (ind == 0 ? value_cell (var) : (char *)NULL);
else if (assoc_p (var))