mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-05 03:10:50 +02:00
commit bash-20111104 snapshot
This commit is contained in:
+14
-4
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user