From e39dfaeb9575a602c34285390df3662c2073cc81 Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Tue, 24 May 2011 15:49:03 +0000 Subject: [PATCH] 29367, 29368: avoid redirecting the xtrace of simple commands along with their standard error. --- ChangeLog | 13 ++++++++++++- Src/exec.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3ef64879e..8022bc2b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2011-05-24 Barton E. Schaefer + + * 29368: Src/exec.c: do not restore xtrerr to stderr before + running simple commands; restore xtrerr to stderr just before + running a function body, but after printing the trace of + the function call itself. + + * 29367: Test/E02xtrace.ztst: update tests to fix mistaken + assumptions introduced by 25154 and add check of redirection + inside a function body. + 2011-05-24 Mikael Magnusson * 29364: Completion/Unix/Command/_make: Partial fix for @@ -14803,5 +14814,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5325 $ +* $Revision: 1.5326 $ ***************************************************** diff --git a/Src/exec.c b/Src/exec.c index 0e1a6c81f..2558185c8 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3079,7 +3079,6 @@ execcmd(Estate state, int input, int output, int how, int last1) if (mfds[i] && mfds[i]->ct >= 2) closemn(mfds, i); - xtrerr = stderr; if (nullexec) { if (nullexec == 1) { /* @@ -4260,6 +4259,7 @@ execshfunc(Shfunc shf, LinkList args) cmdsp = 0; if ((osfc = sfcontext) == SFC_NONE) sfcontext = SFC_DIRECT; + xtrerr = stderr; doshfunc(shf, args, 0); sfcontext = osfc; free(cmdstack);