diff --git a/files/file.c b/files/file.c
index 0038b356d6a..14c5e6da38b 100644
--- a/files/file.c
+++ b/files/file.c
@@ -1162,7 +1162,7 @@ BOOL WINAPI ReadFile( HANDLE hFile, LPVOID buffer, DWORD bytesToRead,
     while ((result = read( unix_handle, buffer, bytesToRead )) == -1)
     {
         if ((errno == EAGAIN) || (errno == EINTR)) continue;
-        if ((errno == EFAULT) && VIRTUAL_HandleFault( buffer )) continue;
+        if ((errno == EFAULT) && !VIRTUAL_HandleFault( buffer )) continue;
         FILE_SetDosError();
         break;
     }
@@ -1198,7 +1198,7 @@ BOOL WINAPI WriteFile( HANDLE hFile, LPCVOID buffer, DWORD bytesToWrite,
     while ((result = write( unix_handle, buffer, bytesToWrite )) == -1)
     {
         if ((errno == EAGAIN) || (errno == EINTR)) continue;
-        if ((errno == EFAULT) && VIRTUAL_HandleFault( buffer )) continue;
+        if ((errno == EFAULT) && !VIRTUAL_HandleFault( buffer )) continue;
         if (errno == ENOSPC)
             SetLastError( ERROR_DISK_FULL );
         else