bc: in xc_read_line(), check ^C on NUL input bytes too

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2019-01-01 02:19:02 +01:00
parent 8797adc1c6
commit 51b510a480

View File

@ -2509,7 +2509,7 @@ static void xc_read_line(BcVec *vec, FILE *fp)
i = 0;
for (;;) {
char c = line_buf[i++];
if (!c) break;
if (c == '\0') break;
if (bad_input_byte(c)) goto again;
}
bc_vec_string(vec, n, line_buf);
@ -2522,14 +2522,16 @@ static void xc_read_line(BcVec *vec, FILE *fp)
bool bad_chars = 0;
do {
get_char:
#if ENABLE_FEATURE_BC_INTERACTIVE
if (G_interrupt) {
// ^C was pressed: ignore entire line, get another one
bc_vec_pop_all(vec);
goto intr;
goto again;
}
#endif
do c = fgetc(fp); while (c == '\0');
c = fgetc(fp);
if (c == '\0')
goto get_char;
if (c == EOF) {
if (ferror(fp))
bb_perror_msg_and_die("input error");