Alexandre Julliard : advapi32/tests: Fix the ReadEventLog error checking.

Alexandre Julliard julliard at winehq.org
Fri Feb 19 09:21:34 CST 2010


Module: wine
Branch: master
Commit: 71fa5a36b156c7637591724316e93696700a52a2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=71fa5a36b156c7637591724316e93696700a52a2

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Feb 19 11:36:12 2010 +0100

advapi32/tests: Fix the ReadEventLog error checking.

---

 dlls/advapi32/tests/eventlog.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 3907873..ff3f658 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -767,22 +767,28 @@ static void test_readwrite(void)
     {
         win_skip("Win7 fails when using incorrect event types\n");
         ret = ReportEvent(handle, 0, 0, 0, NULL, 0, 0, NULL, NULL);
+        ok(ret, "Expected success : %d\n", GetLastError());
     }
     else
     {
         void *buf;
-        DWORD read, needed;
+        DWORD read, needed = 0;
         EVENTLOGRECORD *record;
 
+        ok(ret, "Expected success : %d\n", GetLastError());
+
         /* Needed to catch earlier Vista (with no ServicePack for example) */
         buf = HeapAlloc(GetProcessHeap(), 0, sizeof(EVENTLOGRECORD));
-        if (ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
-                          0, buf, sizeof(EVENTLOGRECORD), &read, &needed))
+        if (!(ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
+                                  0, buf, sizeof(EVENTLOGRECORD), &read, &needed)) &&
+            GetLastError() == ERROR_INSUFFICIENT_BUFFER)
         {
             buf = HeapReAlloc(GetProcessHeap(), 0, buf, needed);
-            ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
-                          0, buf, needed, &read, &needed);
-
+            ret = ReadEventLogA(handle, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
+                                0, buf, needed, &read, &needed);
+        }
+        if (ret)
+        {
             record = (EVENTLOGRECORD *)buf;
 
             /* Vista and W2K8 return EVENTLOG_SUCCESS, Windows versions before return
@@ -793,7 +799,6 @@ static void test_readwrite(void)
         }
         HeapFree(GetProcessHeap(), 0, buf);
     }
-    ok(ret, "Expected success : %d\n", GetLastError());
 
     /* This will clear the eventlog. The record numbering for new
      * events however differs on Vista SP1+. Before Vista the first




More information about the wine-cvs mailing list