Alexandre Julliard : ntdll: Restore the original context for the last frame instead of the result of the unwind handler .

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


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

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

ntdll: Restore the original context for the last frame instead of the result of the unwind handler.

---

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

diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index 144dad1..a9ff371 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -2927,7 +2927,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
     dispatch.ContextRecord    = context;
     dispatch.HistoryTable     = table;
 
-    while (dispatch.EstablisherFrame != (ULONG64)end_frame)
+    for (;;)
     {
         /* FIXME: should use the history table to make things faster */
 
@@ -3031,6 +3031,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
             dispatch.EstablisherFrame = new_context.Rsp;
         }
 
+        if (dispatch.EstablisherFrame == (ULONG64)end_frame) break;
         *context = new_context;
     }
 




More information about the wine-cvs mailing list