summaryrefslogtreecommitdiffhomepage
path: root/shell
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-09-25 02:58:20 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-09-25 02:58:20 +0200
commit726e1a04f7fdf9a646614352cd8c4a371dda6eda (patch)
tree89c1be1ddbc2097d10979a021cc3ce76b81cf1be /shell
parente305c28285ac365d6573802b33a2d542fd236022 (diff)
ash: even smaller `trap` code
function old new delta evalvar 1371 1373 +2 trapcmd 347 260 -87 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 37bdc701a..0cada0474 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -4601,8 +4601,7 @@ forkchild(struct job *jp, union node *n, int mode)
*
* Our solution: ONLY bare $(trap) or `trap` is special.
*/
- /* This is needed to prevent EXIT trap firing and such
- * (trap_ptr will be freed in trapcmd()) */
+ /* This is needed to prevent EXIT trap firing and such */
trap_ptr = memcpy(xmalloc(sizeof(trap)), trap, sizeof(trap));
}
clear_traps();
@@ -12271,14 +12270,18 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
single_quote(tr),
(signo == 0 ? "" : "SIG"),
get_signame(signo));
- if (trap_ptr != trap)
- free(tr);
+ /* trap_ptr != trap only if we are in special-cased `trap` code.
+ * In this case, we will exit very soon, no need to free(). */
+ /* if (trap_ptr != trap) */
+ /* free(tr); */
}
}
+ /*
if (trap_ptr != trap) {
free(trap_ptr);
trap_ptr = trap;
}
+ */
return 0;
}