1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-05-14 20:16:03 +02:00

51001: Reverts 8839e969b, most of 1ba8714a, and d873ed60.

Also correct ChangeLog
This commit is contained in:
Philippe Altherr 2022-12-03 20:31:42 -08:00 committed by Bart Schaefer
parent 41b402d36d
commit 23dc19f005
5 changed files with 19 additions and 32 deletions

View File

@ -31,20 +31,13 @@
2022-11-09 Bart Schaefer <schaefer@zsh.org>
* 50929: Src/exec.c: fix handling of ERR_RETURN bent by 50928.
* 50928: News, Src/exec.c, Test/C03traps.ztst: fix tests for 50897,
mention behavior change in NEWS
* 50928: Test/C03traps.ztst: scoping of ERR_RETURN in test
(most of this patch was not retained)
* 50922: Src/exec.c, Src/jobs.c: fix additional cases of signals
for current shell jobs on the right of a pipeline. Backs out
part of 50874.
2022-11-08 Bart Schaefer <schaefer@zsh.org>
* 50897: Src/exec.c, Src/loop.c: nonzero status of complex
commands should trigger ERR_EXIT
2022-11-08 Peter Stephenson <p.stephenson@samsung.com>
* users/28338: Src/lex.c, Test/D08cmdsubst.ztst: edge case of an

9
NEWS
View File

@ -4,15 +4,6 @@ CHANGES FROM PREVIOUS VERSIONS OF ZSH
Note also the list of incompatibilities in the README file.
Changes since 5.9
-----------------
Handling of ERR_EXIT is corrected when the final status of a structured
command (for, select, while, repeat, if, case, or a list in braces) is
nonzero. To be compatible with other shells, "zsh -e" now exits in
those circumstances, whereas previous versions did not. This does not
affect the handling of nonzero status within conditional statements.
Changes since 5.8.1
-------------------

View File

@ -451,7 +451,7 @@ execcursh(Estate state, int do_exec)
cmdpop();
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -1442,8 +1442,6 @@ execlist(Estate state, int dont_change_job, int exiting)
execsimple(state);
else
execpline(state, code, ltype, (ltype & Z_END) && exiting);
if (!locallevel || unset(ERRRETURN))
this_noerrexit = noerrexit;
state->pc = next;
goto sublist_done;
break;

View File

@ -208,7 +208,7 @@ execfor(Estate state, int do_exec)
loops--;
simple_pline = old_simple_pline;
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -336,7 +336,7 @@ execselect(Estate state, UNUSED(int do_exec))
loops--;
simple_pline = old_simple_pline;
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -478,7 +478,7 @@ execwhile(Estate state, UNUSED(int do_exec))
popheap();
loops--;
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -532,7 +532,7 @@ execrepeat(Estate state, UNUSED(int do_exec))
loops--;
simple_pline = old_simple_pline;
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -587,7 +587,7 @@ execif(Estate state, int do_exec)
lastval = 0;
}
state->pc = end;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}
@ -701,7 +701,7 @@ execcase(Estate state, int do_exec)
if (!anypatok)
lastval = 0;
this_noerrexit = (WC_SUBLIST_TYPE(*end) != WC_SUBLIST_END);
this_noerrexit = 1;
return lastval;
}

View File

@ -726,7 +726,8 @@ F:Must be tested with a top-level script rather than source or function
done
print OK
)
1:ERR_EXIT triggered by status 1 at end of for
0:ERR_EXIT not triggered by status 1 at end of for
>OK
(setopt err_exit
integer x=0
@ -735,7 +736,8 @@ F:Must be tested with a top-level script rather than source or function
done
print OK
)
1:ERR_EXIT triggered by status 1 at end of while
0:ERR_EXIT not triggered by status 1 at end of while
>OK
(setopt err_exit
repeat 1; do
@ -743,7 +745,8 @@ F:Must be tested with a top-level script rather than source or function
done
print OK
)
1:ERR_EXIT triggered by status 1 at end of repeat
0:ERR_EXIT not triggered by status 1 at end of repeat
>OK
(setopt err_exit
if true; then
@ -751,7 +754,8 @@ F:Must be tested with a top-level script rather than source or function
fi
print OK
)
1:ERR_EXIT triggered by status 1 at end of if
0:ERR_EXIT not triggered by status 1 at end of if
>OK
(setopt err_exit
{
@ -759,7 +763,8 @@ F:Must be tested with a top-level script rather than source or function
}
print OK
)
1:ERR_EXIT triggered by status 1 at end of { }
0:ERR_EXIT not triggered by status 1 at end of { }
>OK
unsetopt err_exit err_return
(setopt err_exit