Uwe Bonnes : msvcrt: Check for EOF before correcting CR/LF.

Alexandre Julliard julliard at winehq.org
Thu Jan 28 11:15:38 CST 2010


Module: wine
Branch: master
Commit: 92ac665d3771f709d8ca8305eb974f57e0e1bcac
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=92ac665d3771f709d8ca8305eb974f57e0e1bcac

Author: Uwe Bonnes <bon at elektron.ikp.physik.tu-darmstadt.de>
Date:   Thu Jan 28 12:41:37 2010 +0100

msvcrt: Check for EOF before correcting CR/LF.

---

 dlls/msvcrt/file.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 655f17e..d7e628b 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1757,6 +1757,9 @@ static int read_i(int fd, void *buf, unsigned int count)
   char *bufstart = buf;
   HANDLE hand = msvcrt_fdtoh(fd);
 
+  if (count == 0)
+    return 0;
+
   if (MSVCRT_fdesc[fd].wxflag & WX_READEOF) {
      MSVCRT_fdesc[fd].wxflag |= WX_ATEOF;
      TRACE("already at EOF, returning 0\n");
@@ -1773,7 +1776,12 @@ static int read_i(int fd, void *buf, unsigned int count)
    */
     if (ReadFile(hand, bufstart, count, &num_read, NULL))
     {
-        if (MSVCRT_fdesc[fd].wxflag & WX_TEXT)
+        if (count != 0 && num_read == 0)
+        {
+            MSVCRT_fdesc[fd].wxflag |= (WX_ATEOF|WX_READEOF);
+            TRACE(":EOF %s\n",debugstr_an(buf,num_read));
+        }
+        else if (MSVCRT_fdesc[fd].wxflag & WX_TEXT)
         {
             DWORD i, j;
             if (bufstart[num_read-1] == '\r')
@@ -1802,11 +1810,6 @@ static int read_i(int fd, void *buf, unsigned int count)
             }
             num_read = j;
         }
-        if (count != 0 && num_read == 0)
-        {
-            MSVCRT_fdesc[fd].wxflag |= (WX_ATEOF|WX_READEOF);
-            TRACE(":EOF %s\n",debugstr_an(buf,num_read));
-        }
     }
     else
     {




More information about the wine-cvs mailing list