Piotr Caban : msvcrt: Fix 64-bit _CxxThrowException implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 25 10:56:04 CST 2016


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Feb 25 11:09:03 2016 +0100

msvcrt: Fix 64-bit _CxxThrowException implementation.

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

---

 dlls/msvcrt/cpp.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index 7cffa00..17292d5 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -1152,6 +1152,7 @@ void* CDECL MSVCRT___RTCastToVoid(void *cppobj)
 /*********************************************************************
  *		_CxxThrowException (MSVCRT.@)
  */
+#ifndef __x86_64__
 void WINAPI _CxxThrowException( exception *object, const cxx_exception_type *type )
 {
     ULONG_PTR args[3];
@@ -1161,6 +1162,18 @@ void WINAPI _CxxThrowException( exception *object, const cxx_exception_type *typ
     args[2] = (ULONG_PTR)type;
     RaiseException( CXX_EXCEPTION, EH_NONCONTINUABLE, 3, args );
 }
+#else
+void WINAPI _CxxThrowException( exception *object, const cxx_exception_type *type )
+{
+    ULONG_PTR args[4];
+
+    args[0] = CXX_FRAME_MAGIC_VC6;
+    args[1] = (ULONG_PTR)object;
+    args[2] = (ULONG_PTR)type;
+    RtlPcToFileHeader( (void*)type, (void**)&args[3]);
+    RaiseException( CXX_EXCEPTION, EH_NONCONTINUABLE, 4, args );
+}
+#endif
 
 /*********************************************************************
  * ?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z




More information about the wine-cvs mailing list