All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] iov: Fix do_send_recv() for MinGW (also fixes a build breakage)
@ 2012-07-11  5:09 Stefan Weil
  2012-07-11  5:25 ` Michael Tokarev
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Weil @ 2012-07-11  5:09 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: Stefan Weil, Michael Tokarev, qemu-devel

Commit 25e5e4c7 broke compilation for non POSIX hosts (e.g. MinGW)
because it partially replaced "ret" by "count".

It also changed the handling of EINTR in a wrong way.

The patch restores the old code for these two changes.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 iov.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/iov.c b/iov.c
index 7cc08f0..b333061 100644
--- a/iov.c
+++ b/iov.c
@@ -114,9 +114,9 @@ do_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, bool do_send)
 #else
     /* else send piece-by-piece */
     /*XXX Note: windows has WSASend() and WSARecv() */
-    unsigned i;
-    size_t count = 0;
-    for (i = 0; i < iov_cnt; ++i) {
+    unsigned i = 0;
+    ssize_t ret = 0;
+    while (i < iov_cnt) {
         ssize_t r = do_send
             ? send(sockfd, iov[i].iov_base, iov[i].iov_len, 0)
             : recv(sockfd, iov[i].iov_base, iov[i].iov_len, 0);
@@ -130,12 +130,13 @@ do_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, bool do_send)
             /* else it is some "other" error,
              * only return if there was no data processed. */
             if (ret == 0) {
-                return -1;
+                ret = -1;
             }
             break;
         }
+        i++;
     }
-    return count;
+    return ret;
 #endif
 }
 
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-07-11 13:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-11  5:09 [Qemu-devel] [PATCH] iov: Fix do_send_recv() for MinGW (also fixes a build breakage) Stefan Weil
2012-07-11  5:25 ` Michael Tokarev
2012-07-11 12:39   ` Kevin Wolf
2012-07-11 13:15     ` Paolo Bonzini
2012-07-11 13:50       ` Anthony Liguori

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.