summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/stdio/stdio.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
index d3732dbdb..a42750832 100644
--- a/libc/stdio/stdio.c
+++ b/libc/stdio/stdio.c
@@ -423,8 +423,12 @@ off_t _uClibc_fread(unsigned char *buf, off_t bytes, FILE *fp)
goto FROM_BUF;
}
+ TRY_READ:
len = read(fp->fd, p, (unsigned) bytes);
if (len < 0) {
+ if (errno == EINTR) { /* We were interrupted, so try again. */
+ goto TRY_READ;
+ }
fp->mode |= __MODE_ERR;
} else {
p += len;