diff options
Diffstat (limited to 'app-shells/bash/files/bash-5.0-assignment-preceding-builtin.patch')
-rw-r--r-- | app-shells/bash/files/bash-5.0-assignment-preceding-builtin.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/app-shells/bash/files/bash-5.0-assignment-preceding-builtin.patch b/app-shells/bash/files/bash-5.0-assignment-preceding-builtin.patch deleted file mode 100644 index 84b7fbc8b2a7..000000000000 --- a/app-shells/bash/files/bash-5.0-assignment-preceding-builtin.patch +++ /dev/null @@ -1,83 +0,0 @@ -*** ../bash-5.0-patched/variables.c 2018-12-18 11:07:21.000000000 -0500 ---- variables.c 2019-03-20 10:30:56.000000000 -0400 -*************** -*** 4473,4476 **** ---- 4473,4489 ---- - var = (SHELL_VAR *)data; - -+ #if 1 /* TAG:bash-5.1 */ -+ /* Just like do_assignment_internal(). This makes assignments preceding -+ special builtins act like standalone assignment statements when in -+ posix mode, satisfying the posix requirement that this affect the -+ "current execution environment." */ -+ v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP); -+ -+ /* If this modifies an existing local variable, v->context will be non-zero. -+ If it comes back with v->context == 0, we bound at the global context. -+ Set binding_table appropriately. It doesn't matter whether it's correct -+ if the variable is local, only that it's not global_variables->table */ -+ binding_table = v->context ? shell_variables->table : global_variables->table; -+ #else - binding_table = global_variables->table; - if (binding_table == 0) -*************** -*** 4478,4486 **** - - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); - - /* global variables are no longer temporary and don't need propagating. */ -! var->attributes &= ~(att_tempvar|att_propagate); - if (v) -! v->attributes |= var->attributes; - - if (find_special_var (var->name) >= 0) ---- 4491,4508 ---- - - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); -+ #endif - - /* global variables are no longer temporary and don't need propagating. */ -! if (binding_table == global_variables->table) -! var->attributes &= ~(att_tempvar|att_propagate); -! - if (v) -! { -! v->attributes |= var->attributes; -! v->attributes &= ~att_tempvar; /* not a temp var now */ -! #if 0 /* TAG:bash-5.1 code doesn't need this, disable for bash-5.1 */ -! v->context = (binding_table == global_variables->table) ? 0 : shell_variables->scope; -! #endif -! } - - if (find_special_var (var->name) >= 0) -*************** -*** 4576,4587 **** - { - int i; - - tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1); - tempvar_list[tvlist_ind = 0] = 0; -! -! hash_flush (temporary_env, pushf); -! hash_dispose (temporary_env); - temporary_env = (HASH_TABLE *)NULL; - - tempvar_list[tvlist_ind] = 0; - ---- 4598,4612 ---- - { - int i; -+ HASH_TABLE *disposer; - - tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1); - tempvar_list[tvlist_ind = 0] = 0; -! -! disposer = temporary_env; - temporary_env = (HASH_TABLE *)NULL; - -+ hash_flush (disposer, pushf); -+ hash_dispose (disposer); -+ - tempvar_list[tvlist_ind] = 0; - - |