From 5d754fc958c163fefc3f6db301471ba20dd67f69 Mon Sep 17 00:00:00 2001
From: Mike McCormack <mike_mccormack@start.com.au>
Date: Fri, 21 Dec 2001 19:16:33 +0000
Subject: [PATCH] Don't return from overlapped ReadFile on EAGAIN and other
 non-fatal errors.

---
 files/file.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/files/file.c b/files/file.c
index b3ef8978fb4..e96e94ade9f 100644
--- a/files/file.c
+++ b/files/file.c
@@ -1455,8 +1455,14 @@ BOOL WINAPI ReadFile( HANDLE hFile, LPVOID buffer, DWORD bytesToRead,
 
         if(result<0)
         {
-            FILE_SetDosError();
-            return FALSE;
+            if( (errno!=EAGAIN) && (errno!=EINTR) &&
+                ((errno != EFAULT) || IsBadWritePtr( buffer, bytesToRead )) )
+            {
+                FILE_SetDosError();
+                return FALSE;
+            }
+            else
+                result = 0;
         }
         
         /* if we read enough to keep the app happy, then return now */
-- 
GitLab