Module: wine Branch: master Commit: c20e8c90052ccbf4dec850d7cc28daed214870fa URL: http://source.winehq.org/git/wine.git/?a=commit;h=c20e8c90052ccbf4dec850d7cc...
Author: Alexandre Julliard julliard@winehq.org Date: Thu May 1 11:07:08 2008 +0200
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 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/include/wine/exception.h b/include/wine/exception.h index 1dce217..ad21866 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);