Applied, thanks.
On Wed, Jul 1, 2015 at 5:46 PM, Ron Yorston <[email protected]> wrote: > Now that the only thing protected by setjmp/longjmp is the saved string, > we can allocate it on the stack to get rid of the jump. > > Based on commit bd35d8e from git://git.kernel.org/pub/scm/utils/dash/dash.git > by Herbert Xu. > > function old new delta > readtoken1 3182 3116 -66 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-66) Total: -66 bytes > > Signed-off-by: Ron Yorston <[email protected]> > --- > shell/ash.c | 36 ++---------------------------------- > 1 file changed, 2 insertions(+), 34 deletions(-) > > diff --git a/shell/ash.c b/shell/ash.c > index 1b33fbd..531e9e2 100644 > --- a/shell/ash.c > +++ b/shell/ash.c > @@ -11133,19 +11133,6 @@ readtoken1(int c, int syntax, char *eofmark, int > striptabs) > > IF_ASH_BASH_COMPAT(smallint bash_dollar_squote = 0;) > > -#if __GNUC__ > - /* Avoid longjmp clobbering */ > - (void) &out; > - (void) "ef; > - (void) &dblquote; > - (void) &varnest; > - (void) &arinest; > - (void) &parenlevel; > - (void) &dqvarnest; > - (void) &oldstyle; > - (void) &prevsyntax; > - (void) &syntax; > -#endif > startlinno = g_parsefile->linno; > bqlist = NULL; > quotef = 0; > @@ -11610,30 +11597,16 @@ parsesub: { > parsebackq: { > struct nodelist **nlpp; > union node *n; > - char *volatile str; > - struct jmploc jmploc; > - struct jmploc *volatile savehandler; > + char *str; > size_t savelen; > smallint saveprompt = 0; > > -#ifdef __GNUC__ > - (void) &saveprompt; > -#endif > - if (setjmp(jmploc.loc)) { > - free(str); > - exception_handler = savehandler; > - longjmp(exception_handler->loc, 1); > - } > - INT_OFF; > str = NULL; > savelen = out - (char *)stackblock(); > if (savelen > 0) { > - str = ckmalloc(savelen); > + str = alloca(savelen); > memcpy(str, stackblock(), savelen); > } > - savehandler = exception_handler; > - exception_handler = &jmploc; > - INT_ON; > if (oldstyle) { > /* We must read until the closing backquote, giving special > * treatment to some slashes, and then push the string and > @@ -11732,12 +11705,7 @@ parsebackq: { > if (str) { > memcpy(out, str, savelen); > STADJUST(savelen, out); > - INT_OFF; > - free(str); > - str = NULL; > - INT_ON; > } > - exception_handler = savehandler; > USTPUTC(CTLBACKQ, out); > if (oldstyle) > goto parsebackq_oldreturn; > -- > 2.4.3 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
