diff options
author | Chet Ramey <chet.ramey@case.edu> | 2016-08-22 15:58:43 -0400 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2016-08-22 15:58:43 -0400 |
commit | 955543877583837c85470f7fb8a97b7aa8d45e6c (patch) | |
tree | b239e7c3983a9189b8f0104854ee82283c5807ab /trap.c | |
parent | a4eef1991c25c9d1c55f777952cd522c762c6fc3 (diff) | |
download | bash-4.4-testing.tar.gz |
bash-4.4-rc2 releasebash-4.4-rc2bash-4.4-testing
Diffstat (limited to 'trap.c')
-rw-r--r-- | trap.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -286,6 +286,7 @@ run_pending_traps () register int sig; int old_exit_value, x; WORD_LIST *save_subst_varlist; + HASH_TABLE *save_tempenv; sh_parser_state_t pstate; #if defined (ARRAY_VARS) ARRAY *ps; @@ -397,6 +398,8 @@ run_pending_traps () save_parser_state (&pstate); save_subst_varlist = subst_assign_varlist; subst_assign_varlist = 0; + save_tempenv = temporary_env; + temporary_env = 0; /* traps should not run with temporary env */ #if defined (JOB_CONTROL) save_pipeline (1); /* XXX only provides one save level */ @@ -410,6 +413,7 @@ run_pending_traps () subst_assign_varlist = save_subst_varlist; restore_parser_state (&pstate); + temporary_env = save_tempenv; } pending_traps[sig] = 0; /* XXX - move before evalstring? */ @@ -941,6 +945,7 @@ _run_trap_internal (sig, tag) int flags; procenv_t save_return_catch; WORD_LIST *save_subst_varlist; + HASH_TABLE *save_tempenv; sh_parser_state_t pstate; #if defined (ARRAY_VARS) ARRAY *ps; @@ -977,6 +982,8 @@ _run_trap_internal (sig, tag) save_parser_state (&pstate); save_subst_varlist = subst_assign_varlist; subst_assign_varlist = 0; + save_tempenv = temporary_env; + temporary_env = 0; /* traps should not run with temporary env */ #if defined (JOB_CONTROL) if (sig != DEBUG_TRAP) /* run_debug_trap does this */ @@ -1014,6 +1021,8 @@ _run_trap_internal (sig, tag) restore_pipestatus_array (ps); #endif + temporary_env = save_tempenv; + sigmodes[sig] &= ~SIG_INPROGRESS; running_trap = 0; interrupt_state = old_int; |