aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/bc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index febf51cfd..23b3521d4 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -2509,7 +2509,7 @@ static void xc_read_line(BcVec *vec, FILE *fp)
2509 i = 0; 2509 i = 0;
2510 for (;;) { 2510 for (;;) {
2511 char c = line_buf[i++]; 2511 char c = line_buf[i++];
2512 if (!c) break; 2512 if (c == '\0') break;
2513 if (bad_input_byte(c)) goto again; 2513 if (bad_input_byte(c)) goto again;
2514 } 2514 }
2515 bc_vec_string(vec, n, line_buf); 2515 bc_vec_string(vec, n, line_buf);
@@ -2522,14 +2522,16 @@ static void xc_read_line(BcVec *vec, FILE *fp)
2522 bool bad_chars = 0; 2522 bool bad_chars = 0;
2523 2523
2524 do { 2524 do {
2525 get_char:
2525#if ENABLE_FEATURE_BC_INTERACTIVE 2526#if ENABLE_FEATURE_BC_INTERACTIVE
2526 if (G_interrupt) { 2527 if (G_interrupt) {
2527 // ^C was pressed: ignore entire line, get another one 2528 // ^C was pressed: ignore entire line, get another one
2528 bc_vec_pop_all(vec); 2529 goto again;
2529 goto intr;
2530 } 2530 }
2531#endif 2531#endif
2532 do c = fgetc(fp); while (c == '\0'); 2532 c = fgetc(fp);
2533 if (c == '\0')
2534 goto get_char;
2533 if (c == EOF) { 2535 if (c == EOF) {
2534 if (ferror(fp)) 2536 if (ferror(fp))
2535 bb_perror_msg_and_die("input error"); 2537 bb_perror_msg_and_die("input error");