Alistair Leslie-Hughes : wininet: Always set last error in InternetReadFile.

Alexandre Julliard julliard at winehq.org
Mon Jun 24 16:06:22 CDT 2019


Module: wine
Branch: master
Commit: 8f5b9f4d4bf13cc95e809d9d7e9e24a96ea86878
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=8f5b9f4d4bf13cc95e809d9d7e9e24a96ea86878

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Mon Jun 24 00:22:53 2019 +0000

wininet: Always set last error in InternetReadFile.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47352
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wininet/internet.c   | 3 +--
 dlls/wininet/tests/http.c | 6 ++++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 6671950..7294241 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -2193,8 +2193,7 @@ BOOL WINAPI InternetReadFile(HINTERNET hFile, LPVOID lpBuffer,
     TRACE("-- %s (%u) (bytes read: %d)\n", res == ERROR_SUCCESS ? "TRUE": "FALSE", res,
           pdwNumOfBytesRead ? *pdwNumOfBytesRead : -1);
 
-    if(res != ERROR_SUCCESS)
-        SetLastError(res);
+    SetLastError(res);
     return res == ERROR_SUCCESS;
 }
 
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 70d5738..c8a2796 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -987,7 +987,10 @@ static void InternetReadFile_chunked_test(void)
         {
             char *buffer = HeapAlloc(GetProcessHeap(),0,length+1);
 
+            SetLastError(0xdeadbeef);
             res = InternetReadFile(hor,buffer,length,&got);
+            ok(GetLastError() == 0 ||
+                broken(GetLastError() == 0xdeadbeef /* XP/W2K3 */), "Last Error not reset %u\n", GetLastError());
 
             buffer[got]=0;
             trace("ReadFile -> %i %i\n",res,got);
@@ -1000,8 +1003,11 @@ static void InternetReadFile_chunked_test(void)
         if (length == 0)
         {
             got = 0xdeadbeef;
+            SetLastError(0xdeadbeef);
             res = InternetReadFile( hor, buffer, 1, &got );
             ok( res, "InternetReadFile failed: %u\n", GetLastError() );
+            ok(GetLastError() == 0 ||
+                broken(GetLastError() == 0xdeadbeef /* XP/W2K3 */), "Last Error not reset %u\n", GetLastError());
             ok( !got, "got %u\n", got );
             break;
         }




More information about the wine-cvs mailing list