From c20e8c90052ccbf4dec850d7cc28daed214870fa Mon Sep 17 00:00:00 2001 From: Alexandre Julliard 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);