Alexandre Julliard : msvcrt: Define __CxxLongjmpUnwind for i386 only.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 18 05:34:28 CST 2006


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat Dec 16 17:37:20 2006 +0100

msvcrt: Define __CxxLongjmpUnwind for i386 only.

---

 dlls/msvcrt/cppexcept.c |   29 +++++++++++++++--------------
 dlls/msvcrt/msvcrt.spec |    2 +-
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/cppexcept.c
index e556353..ec1f364 100644
--- a/dlls/msvcrt/cppexcept.c
+++ b/dlls/msvcrt/cppexcept.c
@@ -424,6 +424,21 @@ __ASM_GLOBAL_FUNC( __CxxFrameHandler,
                    "add $28,%esp\n\t"
                    "ret" );
 
+
+/*********************************************************************
+ *		__CxxLongjmpUnwind (MSVCRT.@)
+ *
+ * Callback meant to be used as UnwindFunc for setjmp/longjmp.
+ */
+void __stdcall __CxxLongjmpUnwind( const struct MSVCRT___JUMP_BUFFER *buf )
+{
+    cxx_exception_frame *frame = (cxx_exception_frame *)buf->Registration;
+    const cxx_function_descr *descr = (const cxx_function_descr *)buf->UnwindData[0];
+
+    TRACE( "unwinding frame %p descr %p trylevel %ld\n", frame, descr, buf->TryLevel );
+    cxx_local_unwind( frame, descr, buf->TryLevel );
+}
+
 #endif  /* __i386__ */
 
 /*********************************************************************
@@ -469,17 +484,3 @@ unsigned int CDECL __CxxQueryExceptionSi
 {
   return sizeof(cxx_exception_type);
 }
-
-/*********************************************************************
- *		__CxxLongjmpUnwind (MSVCRT.@)
- *
- * Callback meant to be used as UnwindFunc for setjmp/longjmp.
- */
-void __stdcall __CxxLongjmpUnwind( const struct MSVCRT___JUMP_BUFFER *buf )
-{
-    cxx_exception_frame *frame = (cxx_exception_frame *)buf->Registration;
-    const cxx_function_descr *descr = (const cxx_function_descr *)buf->UnwindData[0];
-
-    TRACE( "unwinding frame %p descr %p trylevel %ld\n", frame, descr, buf->TryLevel );
-    cxx_local_unwind( frame, descr, buf->TryLevel );
-}
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index f236c24..59e21f6 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -76,7 +76,7 @@
 @ cdecl _Strftime(str long str ptr ptr)
 @ cdecl _XcptFilter(long ptr)
 @ cdecl -i386 -norelay __CxxFrameHandler(ptr ptr ptr ptr)
-@ stdcall __CxxLongjmpUnwind(ptr)
+@ stdcall -i386 __CxxLongjmpUnwind(ptr)
 @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid
 @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast
 @ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid




More information about the wine-cvs mailing list