ExternalStream.st
changeset 16491 e0d1851e8511
parent 16480 2b0c4915f31d
child 16493 a5ca28db8d7d
--- a/ExternalStream.st	Fri May 23 21:42:31 2014 +0200
+++ b/ExternalStream.st	Mon May 26 20:25:27 2014 +0200
@@ -299,7 +299,7 @@
         } else {                                        \
             for (;;) {                                  \
                 CLEAR_ERRNO;                            \
-                READ(ret, f, buf, 1, handleType);       \
+                READ((ret), f, buf, 1, handleType);       \
                 if ((ret) >= 0 || __threadErrno != EINTR) \
                     break;                              \
             }                                           \
@@ -343,7 +343,7 @@
                 (ret) = 1;                              \
             } else {                                    \
                 CLEAR_ERRNO;                            \
-                READ(ret, f, (buf)+__offs, (cnt)-__offs, handleType); \
+                READ((ret), f, (buf)+__offs, (cnt)-__offs, handleType); \
                 if ((ret) <= 0) {                       \
                     if ((ret) < 0 && __threadErrno == EINTR) {  \
                         continue;                       \
@@ -380,8 +380,7 @@
             }                                           \
             (buf)[__offs++] = (ret);                    \
         }                                               \
-        if (__offs > 0)                                 \
-            (ret) = __offs;                             \
+        (ret) = __offs;                                 \
     } else {                                            \
         while (__offs < (cnt)) {                        \
             OBJ rA = __INST(readAhead);                 \
@@ -397,25 +396,27 @@
               int res = 0;                              \
               if ((handleType == @symbol(socketFilePointer) && (ioctlsocket((SOCKET)_get_osfhandle(fileno(f)),FIONREAD,&res), 1)) \
                   || (handleType == @symbol(socketHandle) && (ioctlsocket((SOCKET)(f), FIONREAD, &res), 1)) \
-                  || (handleType == @symbol(pipeFilePointer) && (PeekNamedPipe((HANDLE)_get_osfhandle(fileno(f)),0, 0,0,&res,0)), 1)) { \
+                  || (handleType == @symbol(pipeFilePointer) && (PeekNamedPipe((HANDLE)_get_osfhandle(fileno(f)),0, 0,0,&res,0), 1))) { \
                   if (res > 0) {                        \
                       if (res > ((cnt)-__offs))         \
                           res = (cnt)-__offs;           \
-                      READ(ret, f, (buf)+__offs, res, handleType); \
+                      READ((ret), f, (buf)+__offs, res, handleType); \
                   } else {                              \
                       (ret) = 0;                        \
                       break;                            \
                   }                                     \
               } else {                                  \
-                  READ(ret, f, (buf)+__offs, (cnt)-__offs, handleType); \
+                  READ((ret), f, (buf)+__offs, (cnt)-__offs, handleType); \
               }                                         \
             }                                           \
-            if ((ret) < 0 && __threadErrno == EINTR)    \
-                continue;                               \
+            if ((ret) <= 0) {                           \
+                if (ret < 0 && __threadErrno == EINTR)  \
+                    continue;                           \
+                break;                                  \
+            }                                           \
             __offs += (ret);                            \
         }                                               \
-        if (__offs > 0)                                 \
-            (ret) = __offs;                             \
+        (ret) = __offs;                                 \
     }                                                   \
   }
 
@@ -464,7 +465,7 @@
                 l = (cnt)-__offs;                       \
                 if ( l > IO_BUFFER_SIZE)                \
                   l = IO_BUFFER_SIZE;                   \
-                READ(ret,f, __buf, l, handleType);                  \
+                READ((ret),f, __buf, l, handleType);                  \
                 if ((ret) <= 0) {                       \
                     if ((ret) < 0 && __threadErrno == EINTR) {  \
                         continue;                       \
@@ -537,13 +538,13 @@
                     || (handleType == @symbol(pipeFilePointer) && (PeekNamedPipe((HANDLE)_get_osfhandle(fileno(f)),0,0,0,&res,0), 1))) { \
                     if (res > 0) {                   \
                         if (res > l) res = l;        \
-                        READ(ret, f, __buf, res, handleType); \
+                        READ((ret), f, __buf, res, handleType); \
                     } else {                         \
                         (ret) = 0;                   \
                         break;                       \
                     }                                \
                 } else {                             \
-                    READ(ret, f, __buf, l, handleType); \
+                    READ((ret), f, __buf, l, handleType); \
                 }                                       \
                 if ((ret) < 0 && __threadErrno == EINTR) \
                     continue;                           \
@@ -5886,11 +5887,11 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.388 2014-05-22 12:24:44 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.389 2014-05-26 18:25:27 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.388 2014-05-22 12:24:44 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.389 2014-05-26 18:25:27 stefan Exp $'
 ! !