From 2bce0c698e2a2854fc8aa0e44838cc13cbdf772b Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 12 Mar 2012 11:20:29 +0100 Subject: [PATCH] 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(+) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index a9ff371b126..8b3fca953ea 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 9115fc9e2c5..8b807c10099 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 */ -- 2.11.4.GIT