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>
This commit is contained in:
Denys Vlasenko 2009-09-25 02:58:20 +02:00
parent e305c28285
commit 726e1a04f7

View File

@ -4601,8 +4601,7 @@ forkchild(struct job *jp, union node *n, int mode)
* *
* Our solution: ONLY bare $(trap) or `trap` is special. * Our solution: ONLY bare $(trap) or `trap` is special.
*/ */
/* This is needed to prevent EXIT trap firing and such /* This is needed to prevent EXIT trap firing and such */
* (trap_ptr will be freed in trapcmd()) */
trap_ptr = memcpy(xmalloc(sizeof(trap)), trap, sizeof(trap)); trap_ptr = memcpy(xmalloc(sizeof(trap)), trap, sizeof(trap));
} }
clear_traps(); clear_traps();
@ -12271,14 +12270,18 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
single_quote(tr), single_quote(tr),
(signo == 0 ? "" : "SIG"), (signo == 0 ? "" : "SIG"),
get_signame(signo)); get_signame(signo));
if (trap_ptr != trap) /* trap_ptr != trap only if we are in special-cased `trap` code.
free(tr); * In this case, we will exit very soon, no need to free(). */
/* if (trap_ptr != trap) */
/* free(tr); */
} }
} }
/*
if (trap_ptr != trap) { if (trap_ptr != trap) {
free(trap_ptr); free(trap_ptr);
trap_ptr = trap; trap_ptr = trap;
} }
*/
return 0; return 0;
} }