diff --git a/memcr.c b/memcr.c
index f5ad2f7..b66ffbb 100644
--- a/memcr.c
+++ b/memcr.c
@@ -689,6 +689,8 @@ static int __read(int fd, void *buf, size_t count, int (*check_peer_ok)(void), i
 					continue;
 
 				break;
+			} else if (errno == EINTR) {
+				continue;
 			}
 
 			if (silent == FALSE)