From 0800e3af75461c6322427dab53d3526066453b04 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 24 Sep 2009 03:09:26 +0200 Subject: [PATCH] ash: do not let EXIT trap to fire in `trap` Signed-off-by: Denys Vlasenko --- shell/ash.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/shell/ash.c b/shell/ash.c index 597bc2808..47f968b54 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -4525,7 +4525,7 @@ clear_traps(void) INT_OFF; free(*tp); *tp = NULL; - if (tp != &trap[0]) + if ((tp - trap) != 0) setsignal(tp - trap); INT_ON; } @@ -4596,6 +4596,8 @@ forkchild(struct job *jp, union node *n, int mode) * * Our solution: ONLY bare $(trap) or `trap` is special. */ + free(trap[0]); /* Prevent EXIT trap from firing in `trap` */ + trap[0] = NULL; } else { clear_traps(); } @@ -13023,6 +13025,7 @@ exitshell(void) if (p) { trap[0] = NULL; evalstring(p, 0); + free(p); } flush_stdout_stderr(); out: -- 2.25.1