Re: eval: Only restore exit status on exit/return

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Op 29-11-18 om 15:48 schreef Herbert Xu:
The problem is that in evalsubshell we end up in exitshell again
which restores the old exit status.  So we need to come up with
a way to differentiate the exitshell from the original shell vs.
a subshell.

Isn't it much simpler than that? Upon forking a subshell, traps are reset, so it would make sense that any flag that says "we are currently in the process of executing a trap" is also reset.

Which, from a look at the source code, seems to be the -1 value of savestatus. So this oneliner fixes it for me:

diff --git a/src/trap.c b/src/trap.c
index ab0ecd4..7740955 100644
--- a/src/trap.c
+++ b/src/trap.c
@@ -168,6 +168,7 @@ clear_traps(void)
 		}
 	}
 	trapcnt = 0;
+	savestatus = -1;
 	INTON;
 }


Thanks,

- M.



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux