From 6659eb354e9b14c15c3117de0ddffb4704298d1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Fri, 7 Aug 2009 16:23:45 +0200
Subject: [PATCH] Same in append_buffer().

Rev: src/modules/Pipe/pipe.c:1.66
---
 src/modules/Pipe/pipe.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/modules/Pipe/pipe.c b/src/modules/Pipe/pipe.c
index 420e7226cd..05f2740f89 100644
--- a/src/modules/Pipe/pipe.c
+++ b/src/modules/Pipe/pipe.c
@@ -323,8 +323,19 @@ static INLINE int append_buffer(struct pike_string *s)
 
    if(THIS->fd!= -1)
    {
+     ptrdiff_t len = s->len;
+     char *data = s->str;
+     ptrdiff_t bytes;
+
      fd_lseek(THIS->fd, THIS->pos, SEEK_SET);
-     fd_write(THIS->fd, s->str, s->len);
+     while (len > 0) {
+       do {
+	 bytes = fd_write(THIS->fd, data, len);
+       } while ((bytes < 0) && (errno == EINTR));
+       if (bytes < 0) break;
+       data += bytes;
+       len -= bytes;
+     }
      THIS->pos+=s->len;
      return 0;
    }
-- 
GitLab