[PSEH2_TEST]
[reactos.git] / rostests / tests / pseh2 / psehtest.c
index e2f155a..eb46701 100644 (file)
        DEALINGS IN THE SOFTWARE.
 */
 
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
 #include <pseh/pseh2.h>
 
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
 #define STANDALONE
 #include <wine/test.h>
 
@@ -2624,6 +2616,28 @@ int call_test(int (* func)(void))
        return ret;
 }
 
+DEFINE_TEST(test_PSEH3_bug)
+{
+    volatile int count = 0;
+    int dummy = 0;
+
+    _SEH2_TRY
+    {
+        if (count++ == 0)
+        {
+            *(volatile int*)0x12345678 = 0x12345678;
+        }
+    }
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+    {
+        dummy = 0;
+    }
+    _SEH2_END;
+
+    (void)dummy;
+    return (count == 1);
+}
+
 #define USE_TEST_NAME_(NAME_) # NAME_
 #define USE_TEST_NAME(NAME_) USE_TEST_NAME_(NAME_)
 #define USE_TEST(NAME_) { USE_TEST_NAME(NAME_), NAME_ }
@@ -2753,6 +2767,7 @@ void testsuite_syntax(void)
                USE_TEST(test_unvolatile_2),
                USE_TEST(test_finally_goto),
                USE_TEST(test_nested_exception),
+               USE_TEST(test_PSEH3_bug),
        };
 
        size_t i;