diff options
-rw-r--r-- | miscutils/bc.c | 10 |
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"); |