Piotr Caban : msvcrt: Call C structured exception translator in x86_64 __CxxFrameHandler.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Mar 29 08:53:21 CDT 2016


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Mar 28 20:11:44 2016 +0200

msvcrt: Call C structured exception translator in x86_64 __CxxFrameHandler.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/except_x86_64.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/dlls/msvcrt/except_x86_64.c b/dlls/msvcrt/except_x86_64.c
index d31bc69..f81bb95 100644
--- a/dlls/msvcrt/except_x86_64.c
+++ b/dlls/msvcrt/except_x86_64.c
@@ -207,9 +207,19 @@ static DWORD cxx_frame_handler(EXCEPTION_RECORD *rec, ULONG64 frame,
     }
     else
     {
+        thread_data_t *data = msvcrt_get_thread_data();
+
         exc_type = NULL;
         TRACE("handling C exception code %x rec %p frame %lx unwind_help %d descr %p\n",
                 rec->ExceptionCode, rec, frame, *((INT*)(frame+descr->unwind_help)), descr);
+
+        if (data->se_translator) {
+            EXCEPTION_POINTERS except_ptrs;
+
+            except_ptrs.ExceptionRecord = rec;
+            except_ptrs.ContextRecord = context;
+            data->se_translator(rec->ExceptionCode, &except_ptrs);
+        }
     }
 
     return ExceptionContinueSearch;




More information about the wine-cvs mailing list