Sebastian Lackner : ntdll/tests: Use an EXCEPTION_REGISTRATION_RECORD array to prevent compiler from reordering variables.

Alexandre Julliard julliard at winehq.org
Fri Jun 20 16:39:43 CDT 2014


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

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Thu Jun 19 23:15:42 2014 +0200

ntdll/tests: Use an EXCEPTION_REGISTRATION_RECORD array to prevent compiler from reordering variables.

---

 dlls/ntdll/tests/exception.c |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
index 40cdea7..032cc0b 100644
--- a/dlls/ntdll/tests/exception.c
+++ b/dlls/ntdll/tests/exception.c
@@ -434,38 +434,38 @@ static const BYTE call_unwind_code[] = {
 
 static void test_unwind(void)
 {
-    EXCEPTION_REGISTRATION_RECORD frame2, frame1;
+    EXCEPTION_REGISTRATION_RECORD frames[2], *frame2 = &frames[0], *frame1 = &frames[1];
     DWORD (*func)(void* function, EXCEPTION_REGISTRATION_RECORD *pEndFrame, EXCEPTION_RECORD* record, DWORD retval) = code_mem;
     DWORD retval;
 
     memcpy(code_mem, call_unwind_code, sizeof(call_unwind_code));
 
     /* add first unwind handler */
-    frame1.Handler = unwind_handler;
-    frame1.Prev = pNtCurrentTeb()->Tib.ExceptionList;
-    pNtCurrentTeb()->Tib.ExceptionList = &frame1;
+    frame1->Handler = unwind_handler;
+    frame1->Prev = pNtCurrentTeb()->Tib.ExceptionList;
+    pNtCurrentTeb()->Tib.ExceptionList = frame1;
 
     /* add second unwind handler */
-    frame2.Handler = unwind_handler;
-    frame2.Prev = pNtCurrentTeb()->Tib.ExceptionList;
-    pNtCurrentTeb()->Tib.ExceptionList = &frame2;
+    frame2->Handler = unwind_handler;
+    frame2->Prev = pNtCurrentTeb()->Tib.ExceptionList;
+    pNtCurrentTeb()->Tib.ExceptionList = frame2;
 
     /* test unwind to current frame */
     unwind_expected_eax = 0xDEAD0000;
-    retval = func(pRtlUnwind, &frame2, NULL, 0xDEAD0000);
+    retval = func(pRtlUnwind, frame2, NULL, 0xDEAD0000);
     ok(retval == 0xDEAD0000, "RtlUnwind returned eax %08x instead of %08x\n", retval, 0xDEAD0000);
-    ok(pNtCurrentTeb()->Tib.ExceptionList == &frame2, "Exception record points to %p instead of %p\n",
-       pNtCurrentTeb()->Tib.ExceptionList, &frame2);
+    ok(pNtCurrentTeb()->Tib.ExceptionList == frame2, "Exception record points to %p instead of %p\n",
+       pNtCurrentTeb()->Tib.ExceptionList, frame2);
 
     /* unwind to frame1 */
     unwind_expected_eax = 0xDEAD0000;
-    retval = func(pRtlUnwind, &frame1, NULL, 0xDEAD0000);
+    retval = func(pRtlUnwind, frame1, NULL, 0xDEAD0000);
     ok(retval == 0xDEAD0001, "RtlUnwind returned eax %08x instead of %08x\n", retval, 0xDEAD0001);
-    ok(pNtCurrentTeb()->Tib.ExceptionList == &frame1, "Exception record points to %p instead of %p\n",
-       pNtCurrentTeb()->Tib.ExceptionList, &frame1);
+    ok(pNtCurrentTeb()->Tib.ExceptionList == frame1, "Exception record points to %p instead of %p\n",
+       pNtCurrentTeb()->Tib.ExceptionList, frame1);
 
     /* restore original handler */
-    pNtCurrentTeb()->Tib.ExceptionList = frame1.Prev;
+    pNtCurrentTeb()->Tib.ExceptionList = frame1->Prev;
 }
 
 static DWORD handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,




More information about the wine-cvs mailing list