Module: wine Branch: master Commit: 2bce0c698e2a2854fc8aa0e44838cc13cbdf772b URL: http://source.winehq.org/git/wine.git/?a=commit;h=2bce0c698e2a2854fc8aa0e448...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 12 11:20:29 2012 +0100
ntdll: Set the TARGET_UNWIND flag when calling the unwind handler for the target frame.
---
dlls/ntdll/signal_x86_64.c | 1 + include/wine/exception.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index a9ff371..8b3fca9 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -3016,6 +3016,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec ERR( "invalid end frame %lx/%p\n", dispatch.EstablisherFrame, end_frame ); raise_status( STATUS_INVALID_UNWIND_TARGET, rec ); } + if (dispatch.EstablisherFrame == (ULONG64)end_frame) rec->ExceptionFlags |= EH_TARGET_UNWIND; call_unwind_handler( rec, &dispatch ); } else /* hack: call builtin handlers registered in the tib list */ diff --git a/include/wine/exception.h b/include/wine/exception.h index 9115fc9..8b807c1 100644 --- a/include/wine/exception.h +++ b/include/wine/exception.h @@ -252,6 +252,7 @@ static inline EXCEPTION_REGISTRATION_RECORD *__wine_get_frame(void) #define EH_EXIT_UNWIND 0x04 #define EH_STACK_INVALID 0x08 #define EH_NESTED_CALL 0x10 +#define EH_TARGET_UNWIND 0x20
/* Wine-specific exceptions codes */