forked from Mirrors/wine-wine
msvcp140: Add __uncaught_exceptions implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>oldstable
parent
36a88ac2e1
commit
c07ade82ed
|
@ -3513,7 +3513,7 @@
|
|||
@ thiscall -arch=i386 ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ(ptr) basic_streambuf_wchar_uflow
|
||||
@ cdecl -arch=win64 ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ(ptr) basic_streambuf_wchar_uflow
|
||||
@ cdecl ?uncaught_exception@std@@YA_NXZ() MSVCP__uncaught_exception
|
||||
@ stub ?uncaught_exceptions@std@@YAHXZ
|
||||
@ cdecl ?uncaught_exceptions@std@@YAHXZ() __uncaught_exceptions
|
||||
@ cdecl -arch=arm ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAAHXZ(ptr) basic_streambuf_char_underflow
|
||||
@ thiscall -arch=i386 ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ(ptr) basic_streambuf_char_underflow
|
||||
@ cdecl -arch=win64 ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ(ptr) basic_streambuf_char_underflow
|
||||
|
|
|
@ -944,6 +944,13 @@ MSVCP_bool __cdecl MSVCP__uncaught_exception(void)
|
|||
return __uncaught_exception();
|
||||
}
|
||||
|
||||
#if _MSVCP_VER >= 140
|
||||
int __cdecl __uncaught_exceptions(void)
|
||||
{
|
||||
return *UCRTBASE___processing_throw();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if _MSVCP_VER >= 70 || defined(_MSVCIRT)
|
||||
#define EXCEPTION_VTABLE(name,funcs) __ASM_VTABLE(name,funcs)
|
||||
#else
|
||||
|
|
|
@ -47,6 +47,10 @@ extern void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t);
|
|||
extern void (__cdecl *MSVCRT_operator_delete)(void*);
|
||||
extern void* (__cdecl *MSVCRT_set_new_handler)(void*);
|
||||
|
||||
#if _MSVCP_VER >= 140
|
||||
extern int* (__cdecl *UCRTBASE___processing_throw)(void);
|
||||
#endif
|
||||
|
||||
#if _MSVCP_VER >= 110
|
||||
/* keep in sync with msvcrt/lock.c */
|
||||
typedef struct cs_queue
|
||||
|
|
|
@ -60,6 +60,10 @@ void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t);
|
|||
void (__cdecl *MSVCRT_operator_delete)(void*);
|
||||
void* (__cdecl *MSVCRT_set_new_handler)(void*);
|
||||
|
||||
#if _MSVCP_VER >= 140
|
||||
int* (__cdecl *UCRTBASE___processing_throw)(void);
|
||||
#endif
|
||||
|
||||
#if _MSVCP_VER >= 110
|
||||
critical_section* (__thiscall *critical_section_ctor)(critical_section*);
|
||||
void (__thiscall *critical_section_dtor)(critical_section*);
|
||||
|
@ -147,6 +151,7 @@ static void init_cxx_funcs(void)
|
|||
MSVCRT_operator_new = operator_new;
|
||||
MSVCRT_operator_delete = operator_delete;
|
||||
MSVCRT_set_new_handler = (void*)GetProcAddress(hmod, "_set_new_handler");
|
||||
UCRTBASE___processing_throw = (void*)GetProcAddress(hmod, "__processing_throw");
|
||||
|
||||
hcon = LoadLibraryA( CONCRT_NAME(_MSVCP_VER) );
|
||||
if (!hcon) FIXME( "%s not loaded\n", CONCRT_NAME(_MSVCP_VER) );
|
||||
|
|
Loading…
Reference in New Issue