Alexandre Julliard : msvcrt: Implemented __CppXcptFilter.
Alexandre Julliard
julliard at winehq.org
Tue Mar 11 10:51:53 CDT 2008
Module: wine
Branch: master
Commit: a6d7b6fc60b40cd9b73f1de0d7d74d96edc8b3a7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a6d7b6fc60b40cd9b73f1de0d7d74d96edc8b3a7
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Mar 11 16:14:44 2008 +0100
msvcrt: Implemented __CppXcptFilter.
---
dlls/msvcr71/msvcr71.spec | 2 +-
dlls/msvcrt/cppexcept.c | 11 +++++++++++
dlls/msvcrt/cppexcept.h | 4 +++-
dlls/msvcrt/msvcrt.spec | 1 +
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec
index 28ec8a3..e39f0fb 100644
--- a/dlls/msvcr71/msvcr71.spec
+++ b/dlls/msvcr71/msvcr71.spec
@@ -75,7 +75,7 @@
@ extern _HUGE msvcrt._HUGE
@ cdecl _Strftime(str long str ptr ptr) msvcrt._Strftime
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
-@ stub __CppXcptFilter
+@ cdecl __CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindVecDtor
@ stub __CxxDetectRethrow
diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/cppexcept.c
index 08d928a..6dafc9e 100644
--- a/dlls/msvcrt/cppexcept.c
+++ b/dlls/msvcrt/cppexcept.c
@@ -440,6 +440,17 @@ void __stdcall __CxxLongjmpUnwind( const struct MSVCRT___JUMP_BUFFER *buf )
#endif /* __i386__ */
+
+/*********************************************************************
+ * __CppXcptFilter (MSVCRT.@)
+ */
+int CDECL __CppXcptFilter(NTSTATUS ex, PEXCEPTION_POINTERS ptr)
+{
+ /* only filter c++ exceptions */
+ if (ex != CXX_EXCEPTION) return EXCEPTION_CONTINUE_SEARCH;
+ return _XcptFilter( ex, ptr );
+}
+
/*********************************************************************
* _CxxThrowException (MSVCRT.@)
*/
diff --git a/dlls/msvcrt/cppexcept.h b/dlls/msvcrt/cppexcept.h
index bf607c9..0818fa7 100644
--- a/dlls/msvcrt/cppexcept.h
+++ b/dlls/msvcrt/cppexcept.h
@@ -133,7 +133,9 @@ typedef struct __cxx_exception_type
const cxx_type_info_table *type_info_table; /* list of types for this exception object */
} cxx_exception_type;
-void _CxxThrowException(exception*,const cxx_exception_type*);
+void CDECL _CxxThrowException(exception*,const cxx_exception_type*);
+int CDECL _XcptFilter(NTSTATUS, PEXCEPTION_POINTERS);
+int CDECL __CppXcptFilter(NTSTATUS, PEXCEPTION_POINTERS);
static inline const char *dbgstr_type_info( const type_info *info )
{
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 7b821e6..8f8ccf4 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -75,6 +75,7 @@
@ extern _HUGE MSVCRT__HUGE
@ cdecl _Strftime(str long str ptr ptr)
@ cdecl _XcptFilter(long ptr)
+@ cdecl __CppXcptFilter(long ptr)
@ cdecl __CxxDetectRethrow(ptr)
@ cdecl -i386 -norelay __CxxFrameHandler(ptr ptr ptr ptr)
@ stdcall -i386 __CxxLongjmpUnwind(ptr)
More information about the wine-cvs
mailing list