Commit c07ade82 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcp140: Add __uncaught_exceptions implementation.

parent 36a88ac2
......@@ -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) );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment