--- busybox-1.13.3/shell/ash.c Thu Feb 26 12:46:55 2009 +++ busybox-1.13.3-ash/shell/ash.c Thu Mar 19 04:34:01 2009 @@ -376,7 +376,6 @@ onsig(int signo) { gotsig[signo - 1] = 1; - pendingsig = signo; if (/* exsig || */ (signo == SIGINT && !trap[SIGINT])) { if (!suppressint) { @@ -384,6 +383,8 @@ raise_interrupt(); /* does not return */ } intpending = 1; + } else { + pendingsig = signo; } } @@ -13692,15 +13693,20 @@ } state3: state = 4; - if (minusc) + if (minusc) { + /* evalstring pushes parsefile stack. + * Ensure we don't falsely claim that 0 (stdin) + * is one of stacked source fds */ + if (!sflag) + g_parsefile->fd = -1; evalstring(minusc, 0); + } if (sflag || minusc == NULL) { #if ENABLE_FEATURE_EDITING_SAVEHISTORY if (iflag) { const char *hp = lookupvar("HISTFILE"); - - if (hp != NULL) + if (hp) line_input_state->hist_file = hp; } #endif