diff --git a/shell/hush.c b/shell/hush.c index 533c56de2..7167de701 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -50,7 +50,6 @@ * * TODOs: * grep for "TODO" and fix (some of them are easy) - * $var refs in function do not pick up values set by "var=val func" * builtins: ulimit * follow IFS rules more precisely, including update semantics * @@ -100,10 +99,9 @@ # undef CONFIG_FEATURE_SH_STANDALONE # undef ENABLE_FEATURE_SH_STANDALONE # undef IF_FEATURE_SH_STANDALONE -# define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__ -# define ENABLE_FEATURE_SH_STANDALONE 0 # define IF_FEATURE_SH_STANDALONE(...) # define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__ +# define ENABLE_FEATURE_SH_STANDALONE 0 #endif #if !ENABLE_HUSH_INTERACTIVE @@ -4111,8 +4109,11 @@ static int run_list(struct pipe *pi) } #endif #if ENABLE_HUSH_FUNCTIONS - if (G.flag_return_in_progress == 1) - goto check_jobs_and_break; + if (G.flag_return_in_progress == 1) { + /* same as "goto check_jobs_and_break" */ + checkjobs(NULL); + break; + } #endif } else if (pi->followup == PIPE_BG) { /* What does bash do with attempts to background builtins? */