Alexandre Julliard : ntdll: Add support for the special STATUS_UNWIND_CONSOLIDATE exception code.

Alexandre Julliard julliard at winehq.org
Mon Mar 12 11:59:58 CDT 2012


Module: wine
Branch: master
Commit: e562623a15c6aca6b4e8f2e880c7b28682d768c1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e562623a15c6aca6b4e8f2e880c7b28682d768c1

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Mar 12 11:27:19 2012 +0100

ntdll: Add support for the special STATUS_UNWIND_CONSOLIDATE exception code.

---

 dlls/ntdll/signal_x86_64.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index a0d02a3..12acf94 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -3062,6 +3062,12 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
         context->u.s.Xmm14 = jmp->Xmm14;
         context->u.s.Xmm15 = jmp->Xmm15;
     }
+    else if (rec->ExceptionCode == STATUS_UNWIND_CONSOLIDATE && rec->NumberParameters >= 1)
+    {
+        PVOID (CALLBACK *consolidate)(EXCEPTION_RECORD *) = (void *)rec->ExceptionInformation[0];
+        TRACE( "calling consolidate callback %p\n", consolidate );
+        target_ip = consolidate( rec );
+    }
     context->Rax = (ULONG64)retval;
     context->Rip = (ULONG64)target_ip;
     TRACE( "returning to %lx stack %lx\n", context->Rip, context->Rsp );




More information about the wine-cvs mailing list