commit bash-20100211 snapshot

This commit is contained in:
Chet Ramey
2011-12-12 21:54:17 -05:00
parent 3d8cce2617
commit 8991b5b071
3 changed files with 220 additions and 380 deletions
+10
View File
@@ -9478,3 +9478,13 @@ shell.c
foo in an executable shell script without a leading `#!' (fixes
longstanding bug)
2/8
---
variables.c
- in push_func_var, if a variable is in a special builtin's temporary
environment and needs to be propagated because we're in Posix mode,
or we just need to propagate a variable, and we are executing in a
function without any local variables (so the function-local variable
context has no variable hash table), make sure we create a hash
table so we have a place to save the variable to be propagated.
Fixes bug reported by Crestez Dan Leonard <cdleonard@gmail.com>.
+205 -380
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -3807,6 +3807,11 @@ push_func_var (data)
if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
{
/* Make sure we have a hash table to store the variable in while it is
being propagated down to the global variables table. Create one if
we have to */
if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
shell_variables->table = hash_create (0);
/* XXX - should we set v->context here? */
v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
if (shell_variables == global_variables)