aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 70ee15ed8..60c8ffeb7 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -13268,6 +13268,7 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
13268 /* "read -s" needs to save/restore termios, can't allow ^C 13268 /* "read -s" needs to save/restore termios, can't allow ^C
13269 * to jump out of it. 13269 * to jump out of it.
13270 */ 13270 */
13271 again:
13271 INT_OFF; 13272 INT_OFF;
13272 r = shell_builtin_read(setvar0, 13273 r = shell_builtin_read(setvar0,
13273 argptr, 13274 argptr,
@@ -13280,6 +13281,12 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
13280 ); 13281 );
13281 INT_ON; 13282 INT_ON;
13282 13283
13284 if ((uintptr_t)r == 1 && errno == EINTR) {
13285 /* to get SIGCHLD: sleep 1 & read x; echo $x */
13286 if (pending_sig == 0)
13287 goto again;
13288 }
13289
13283 if ((uintptr_t)r > 1) 13290 if ((uintptr_t)r > 1)
13284 ash_msg_and_raise_error(r); 13291 ash_msg_and_raise_error(r);
13285 13292