[ROSAUTOTEST] Cache the result of GetLastError().
authorColin Finck <colin@reactos.org>
Tue, 23 Apr 2019 09:37:58 +0000 (11:37 +0200)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Fri, 26 Apr 2019 06:47:15 +0000 (08:47 +0200)
modules/rostests/rosautotest/CPipe.cpp

index 5af7163..73e9eda 100644 (file)
@@ -169,7 +169,9 @@ CPipe::Read(PVOID Buffer, DWORD NumberOfBytesToRead, PDWORD NumberOfBytesRead, D
         // The asynchronous read request could be satisfied immediately.
         return ERROR_SUCCESS;
     }
-    else if (GetLastError() == ERROR_IO_PENDING)
+
+    DWORD dwLastError = GetLastError();
+    if (dwLastError == ERROR_IO_PENDING)
     {
         // The asynchronous read request could not be satisfied immediately, so wait for it with the given timeout.
         DWORD dwWaitResult = WaitForSingleObject(m_ReadOverlapped.hEvent, TimeoutMilliseconds);
@@ -181,7 +183,9 @@ CPipe::Read(PVOID Buffer, DWORD NumberOfBytesToRead, PDWORD NumberOfBytesRead, D
                 // We successfully read NumberOfBytesRead bytes.
                 return ERROR_SUCCESS;
             }
-            else if (GetLastError() == ERROR_BROKEN_PIPE)
+
+            dwLastError = GetLastError();
+            if (dwLastError == ERROR_BROKEN_PIPE)
             {
                 // The other end of the pipe has been closed.
                 return ERROR_BROKEN_PIPE;
@@ -201,7 +205,7 @@ CPipe::Read(PVOID Buffer, DWORD NumberOfBytesToRead, PDWORD NumberOfBytesRead, D
     else
     {
         // This may be ERROR_BROKEN_PIPE or an unexpected error.
-        return GetLastError();
+        return dwLastError;
     }
 }