From 4554b721ad230cdb5308b9ee61c20729c2c34ae8 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 29 Jul 2008 13:36:09 +0000 Subject: hush: small fix for repeated continue and fix for wrong loop depth count after Ctrl-C; with testcase for first one --- shell/hush.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'shell/hush.c') diff --git a/shell/hush.c b/shell/hush.c index a2649d069..ab067dd26 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -2131,6 +2131,8 @@ static int run_list(struct pipe *pi) /* ctrl-C. We just stop doing whatever we were doing */ bb_putchar('\n'); } + loop_top = NULL; + depth_of_loop = 0; rcode = 0; goto ret; } @@ -2152,7 +2154,9 @@ static int run_list(struct pipe *pi) debug_printf_exec(": rword=%d cond_code=%d skip_more=%d\n", rword, cond_code, skip_more_for_this_rword); #if ENABLE_HUSH_LOOPS - if (rword == RES_WHILE || rword == RES_UNTIL || rword == RES_FOR) { + if ((rword == RES_WHILE || rword == RES_UNTIL || rword == RES_FOR) + && loop_top == NULL /* avoid bumping depth_of_loop twice */ + ) { /* start of a loop: remember where loop starts */ loop_top = pi; depth_of_loop++; -- cgit v1.2.3