On Fri, Feb 25, 2005 at 09:09:11PM +1100, herbert wrote:
>
> Good catch. We need to check whether the EXEVAL is thrown by a subshell
> and if so relay it to the top.
>
> Please try these two patches instead.
We need one more patch. EXEVAL should not modify the exit status.
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
===== eval.c 1.100 vs edited =====
--- 1.100/src/eval.c 2005-02-25 21:15:30 +11:00
+++ edited/eval.c 2005-02-25 22:02:56 +11:00
@@ -874,6 +874,12 @@
i = exception;
if (i == EXEXIT)
goto raise;
+ if (i == EXEVAL) {
+ if (oldlvl == shlvl)
+ goto trap;
+ else
+ goto raise;
+ }
status = 2;
j = 0;
@@ -885,11 +891,11 @@
status = j + 128;
exitstatus = status;
- if (i == EXINT || (i != EXEVAL && spclbltin > 0) ||
- oldlvl != shlvl) {
+ if (i == EXINT || spclbltin > 0) {
raise:
longjmp(handler->loc, 1);
}
+trap:
FORCEINTON;
}
break;