From: Piotr Caban piotr@codeweavers.com
It's only used for WinRT exceptions (not for other COM objects). --- dlls/msvcrt/cppexcept.h | 8 ++++---- dlls/msvcrt/except.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/msvcrt/cppexcept.h b/dlls/msvcrt/cppexcept.h index 21a7e6a8009..61267add740 100644 --- a/dlls/msvcrt/cppexcept.h +++ b/dlls/msvcrt/cppexcept.h @@ -135,12 +135,12 @@ typedef struct
#define CLASS_IS_SIMPLE_TYPE 1 #define CLASS_HAS_VIRTUAL_BASE_CLASS 4 -#define CLASS_IS_IUNKNOWN 8 +#define CLASS_IS_WINRT 8
#define TYPE_FLAG_CONST 1 #define TYPE_FLAG_VOLATILE 2 #define TYPE_FLAG_REFERENCE 8 -#define TYPE_FLAG_IUNKNOWN 16 +#define TYPE_FLAG_WINRT 16
void WINAPI DECLSPEC_NORETURN _CxxThrowException(void*,const cxx_exception_type*);
@@ -248,7 +248,7 @@ static inline void copy_exception( void *object, void **dest, UINT catch_flags, } else if (type->flags & CLASS_IS_SIMPLE_TYPE) { - if (type->flags & CLASS_IS_IUNKNOWN && *(IUnknown**)object) + if (type->flags & CLASS_IS_WINRT && *(IUnknown**)object) IUnknown_AddRef(*(IUnknown**)object); memmove( dest, object, type->size ); /* if it is a pointer, adjust it */ @@ -264,7 +264,7 @@ static inline void copy_exception( void *object, void **dest, UINT catch_flags, } else { - if (type->flags & CLASS_IS_IUNKNOWN && *(IUnknown**)object) + if (type->flags & CLASS_IS_WINRT && *(IUnknown**)object) IUnknown_AddRef(*(IUnknown**)object); memmove( dest, get_this_pointer( &type->offsets, object ), type->size ); } diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index bed1df0276e..383c67f7437 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -964,7 +964,7 @@ void CDECL __DestructExceptionObject(EXCEPTION_RECORD *rec)
if (info->destructor) call_dtor( cxx_rva( info->destructor, rec->ExceptionInformation[3] ), object ); - else if (info->flags & TYPE_FLAG_IUNKNOWN && *(IUnknown**)object) + else if (info->flags & TYPE_FLAG_WINRT && *(IUnknown**)object) IUnknown_Release( *(IUnknown**)object ); }