From c20e8c90052ccbf4dec850d7cc28daed214870fa Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Thu, 1 May 2008 11:07:08 +0200
Subject: [PATCH] exception.h: Only push the exception frame after sigsetjmp.

Otherwise on Windows longjmp may want to mess with the exception frame.
---
 include/wine/exception.h | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/include/wine/exception.h b/include/wine/exception.h
index 1dce2177648..ad2186683e0 100644
--- a/include/wine/exception.h
+++ b/include/wine/exception.h
@@ -96,7 +96,6 @@
          } else { \
              __f.frame.Handler = __wine_exception_handler; \
              __f.u.filter = (func); \
-             __wine_push_frame( &__f.frame ); \
              if (sigsetjmp( __f.jmp, 0 )) { \
                  const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
                  do {
@@ -108,7 +107,6 @@
              break; \
          } else { \
              __f.frame.Handler = __wine_exception_handler_page_fault; \
-             __wine_push_frame( &__f.frame ); \
              if (sigsetjmp( __f.jmp, 0 )) { \
                  const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
                  do {
@@ -120,7 +118,6 @@
              break; \
          } else { \
              __f.frame.Handler = __wine_exception_handler_all; \
-             __wine_push_frame( &__f.frame ); \
              if (sigsetjmp( __f.jmp, 0 )) { \
                  const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
                  do {
@@ -129,6 +126,7 @@
                  } while (0); \
                  break; \
              } \
+             __wine_push_frame( &__f.frame ); \
              __first = 0; \
          } \
     } while (0);
-- 
GitLab