Module: wine Branch: master Commit: 92ac665d3771f709d8ca8305eb974f57e0e1bcac URL: http://source.winehq.org/git/wine.git/?a=commit;h=92ac665d3771f709d8ca8305eb...
Author: Uwe Bonnes bon@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 {