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:
parent
e305c28285
commit
726e1a04f7
11
shell/ash.c
11
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user