diff --git a/shell/ash.c b/shell/ash.c index 674a41bd3..d1ca3451d 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -10593,7 +10593,7 @@ preadfd(void) g_parsefile->next_to_pgetc = buf; #if ENABLE_FEATURE_EDITING - retry: + /* retry: */ if (!iflag || g_parsefile->pf_fd != STDIN_FILENO) nr = nonblock_immune_read(g_parsefile->pf_fd, buf, IBUFSIZ - 1); else { @@ -10615,15 +10615,14 @@ preadfd(void) if (nr == 0) { /* ^C pressed, "convert" to SIGINT */ write(STDOUT_FILENO, "^C", 2); + raise(SIGINT); if (trap[SIGINT]) { buf[0] = '\n'; buf[1] = '\0'; - raise(SIGINT); return 1; } exitstatus = 128 + SIGINT; - bb_putchar('\n'); - goto retry; + return -1; } if (nr < 0) { if (errno == 0) {