From: Piotr Caban Subject: [PATCH 5/7] msvcrt: Add scheduler_resource_allocation_error class implementation Message-Id: <4d35828d-497e-340d-4951-32965c8730a6@codeweavers.com> Date: Thu, 23 Mar 2017 10:56:19 +0100 Signed-off-by: Piotr Caban --- dlls/concrt140/concrt140.spec | 12 +++--- dlls/msvcr100/msvcr100.spec | 12 +++--- dlls/msvcr110/msvcr110.spec | 18 ++++----- dlls/msvcr120/msvcr120.spec | 18 ++++----- dlls/msvcr120_app/msvcr120_app.spec | 18 ++++----- dlls/msvcrt/cpp.c | 80 +++++++++++++++++++++++++++++++++++++ dlls/msvcrt/cxx.h | 2 + 7 files changed, 121 insertions(+), 39 deletions(-) diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec index 191f1e7..29efd72 100644 --- a/dlls/concrt140/concrt140.spec +++ b/dlls/concrt140/concrt140.spec @@ -138,10 +138,10 @@ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@PEBD@Z @ stub -arch=win32 ??0scheduler_not_attached@Concurrency@@QAE@XZ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@XZ -@ stub -arch=win32 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z -@ stub -arch=win32 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z(ptr long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z(ptr long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z(ptr str long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z(ptr str long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z @ stub -arch=win32 ??0scheduler_worker_creation_error@Concurrency@@QAE@J@Z @ stub -arch=win64 ??0scheduler_worker_creation_error@Concurrency@@QEAA@J@Z @ stub -arch=win32 ??0scheduler_worker_creation_error@Concurrency@@QAE@PBDJ@Z @@ -475,8 +475,8 @@ @ stub -arch=i386 ?done@agent@Concurrency@@IAE_NXZ @ stub -arch=win64 ?done@agent@Concurrency@@IEAA_NXZ @ stub ?from_numa_node@location@Concurrency@@SA?AV12@G@Z -@ stub -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ -@ stub -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ +@ thiscall -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ(ptr) msvcr120.?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ +@ cdecl -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ(ptr) msvcr120.?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ @ cdecl ?is_current_task_group_canceling@Concurrency@@YA_NXZ(ptr) msvcp120.?is_current_task_group_canceling@Concurrency@@YA_NXZ @ thiscall -arch=i386 ?lock@critical_section@Concurrency@@QAEXXZ(ptr) msvcr120.?lock@critical_section@Concurrency@@QAEXXZ @ cdecl -arch=win64 ?lock@critical_section@Concurrency@@QEAAXXZ(ptr) msvcr120.?lock@critical_section@Concurrency@@QEAAXXZ diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index d0c110a..06dd749 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -140,10 +140,10 @@ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@PEBD@Z @ stub -arch=win32 ??0scheduler_not_attached@Concurrency@@QAE@XZ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@XZ -@ stub -arch=win32 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z -@ stub -arch=win32 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name @ thiscall -arch=win32 ??0scoped_lock@critical_section@Concurrency@@QAE@AAV12@@Z(ptr ptr) critical_section_scoped_lock_ctor @ cdecl -arch=win64 ??0scoped_lock@critical_section@Concurrency@@QEAA@AEAV12@@Z(ptr ptr) critical_section_scoped_lock_ctor @ stub -arch=win32 ??0scoped_lock@reader_writer_lock@Concurrency@@QAE@AAV12@@Z @@ -457,8 +457,8 @@ @ cdecl -arch=win64 ?_wsopen@@YAHPEB_WHHH@Z(wstr long long long) MSVCRT__wsopen @ thiscall -arch=i386 ?before@type_info@@QBEHABV1@@Z(ptr ptr) MSVCRT_type_info_before @ cdecl -arch=win64 ?before@type_info@@QEBAHAEBV1@@Z(ptr ptr) MSVCRT_type_info_before -@ stub -arch=win32 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ -@ stub -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ +@ thiscall -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ(ptr) scheduler_resource_allocation_error_get_error_code +@ cdecl -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ(ptr) scheduler_resource_allocation_error_get_error_code @ thiscall -arch=win32 ?lock@critical_section@Concurrency@@QAEXXZ(ptr) critical_section_lock @ cdecl -arch=win64 ?lock@critical_section@Concurrency@@QEAAXXZ(ptr) critical_section_lock @ thiscall -arch=win32 ?lock@reader_writer_lock@Concurrency@@QAEXXZ(ptr) reader_writer_lock_lock diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 741f93d..b9826cf 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -236,12 +236,12 @@ @ stub -arch=arm ??0scheduler_not_attached@Concurrency@@QAA@XZ @ stub -arch=i386 ??0scheduler_not_attached@Concurrency@@QAE@XZ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name @ stub -arch=arm ??0scheduler_worker_creation_error@Concurrency@@QAA@J@Z @ stub -arch=i386 ??0scheduler_worker_creation_error@Concurrency@@QAE@J@Z @ stub -arch=win64 ??0scheduler_worker_creation_error@Concurrency@@QEAA@J@Z @@ -743,9 +743,9 @@ @ cdecl -arch=win64 ?before@type_info@@QEBA_NAEBV1@@Z(ptr ptr) MSVCRT_type_info_before @ stub ?current@location@Concurrency@@SA?AV12@XZ @ stub ?from_numa_node@location@Concurrency@@SA?AV12@G@Z -@ stub -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ -@ stub -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ -@ stub -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ +@ cdecl -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ(ptr) scheduler_resource_allocation_error_get_error_code +@ thiscall -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ(ptr) scheduler_resource_allocation_error_get_error_code +@ cdecl -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ(ptr) scheduler_resource_allocation_error_get_error_code @ cdecl -arch=arm ?lock@critical_section@Concurrency@@QAAXXZ(ptr) critical_section_lock @ thiscall -arch=i386 ?lock@critical_section@Concurrency@@QAEXXZ(ptr) critical_section_lock @ cdecl -arch=win64 ?lock@critical_section@Concurrency@@QEAAXXZ(ptr) critical_section_lock diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index ff7eb4e..d8b1e2a 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -233,12 +233,12 @@ @ stub -arch=arm ??0scheduler_not_attached@Concurrency@@QAA@XZ @ stub -arch=i386 ??0scheduler_not_attached@Concurrency@@QAE@XZ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z(ptr long) scheduler_resource_allocation_error_ctor +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z(ptr str long) scheduler_resource_allocation_error_ctor_name @ stub -arch=arm ??0scheduler_worker_creation_error@Concurrency@@QAA@J@Z @ stub -arch=i386 ??0scheduler_worker_creation_error@Concurrency@@QAE@J@Z @ stub -arch=win64 ??0scheduler_worker_creation_error@Concurrency@@QEAA@J@Z @@ -725,9 +725,9 @@ @ cdecl -arch=win64 ?before@type_info@@QEBA_NAEBV1@@Z(ptr ptr) MSVCRT_type_info_before @ stub ?current@location@Concurrency@@SA?AV12@XZ @ stub ?from_numa_node@location@Concurrency@@SA?AV12@G@Z -@ stub -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ -@ stub -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ -@ stub -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ +@ cdecl -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ(ptr) scheduler_resource_allocation_error_get_error_code +@ thiscall -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ(ptr) scheduler_resource_allocation_error_get_error_code +@ cdecl -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ(ptr) scheduler_resource_allocation_error_get_error_code @ cdecl -arch=arm ?lock@critical_section@Concurrency@@QAAXXZ(ptr) critical_section_lock @ thiscall -arch=i386 ?lock@critical_section@Concurrency@@QAEXXZ(ptr) critical_section_lock @ cdecl -arch=win64 ?lock@critical_section@Concurrency@@QEAAXXZ(ptr) critical_section_lock diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 86f3fe7..b01f469 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -231,12 +231,12 @@ @ stub -arch=arm ??0scheduler_not_attached@Concurrency@@QAA@XZ @ stub -arch=i386 ??0scheduler_not_attached@Concurrency@@QAE@XZ @ stub -arch=win64 ??0scheduler_not_attached@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z -@ stub -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z -@ stub -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z -@ stub -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z(ptr long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAA@J@Z +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z(ptr long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z(ptr long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z +@ cdecl -arch=arm ??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z(ptr str long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAA@PBDJ@Z +@ thiscall -arch=i386 ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z(ptr str long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z +@ cdecl -arch=win64 ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z(ptr str long) msvcr120.??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z @ stub -arch=arm ??0scheduler_worker_creation_error@Concurrency@@QAA@J@Z @ stub -arch=i386 ??0scheduler_worker_creation_error@Concurrency@@QAE@J@Z @ stub -arch=win64 ??0scheduler_worker_creation_error@Concurrency@@QEAA@J@Z @@ -721,9 +721,9 @@ @ cdecl -arch=win64 ?before@type_info@@QEBA_NAEBV1@@Z(ptr ptr) msvcr120.?before@type_info@@QEBA_NAEBV1@@Z @ stub ?current@location@Concurrency@@SA?AV12@XZ @ stub ?from_numa_node@location@Concurrency@@SA?AV12@G@Z -@ stub -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ -@ stub -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ -@ stub -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ +@ cdecl -arch=arm ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ(ptr) msvcr120.?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBAJXZ +@ thiscall -arch=i386 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ(ptr) msvcr120.?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ +@ cdecl -arch=win64 ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ(ptr) msvcr120.?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ @ cdecl -arch=arm ?lock@critical_section@Concurrency@@QAAXXZ(ptr) msvcr120.?lock@critical_section@Concurrency@@QAAXXZ @ thiscall -arch=i386 ?lock@critical_section@Concurrency@@QAEXXZ(ptr) msvcr120.?lock@critical_section@Concurrency@@QAEXXZ @ cdecl -arch=win64 ?lock@critical_section@Concurrency@@QEAAXXZ(ptr) msvcr120.?lock@critical_section@Concurrency@@QEAAXXZ diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c index a86048a..36e730b 100644 --- a/dlls/msvcrt/cpp.c +++ b/dlls/msvcrt/cpp.c @@ -649,6 +649,68 @@ void * __thiscall MSVCRT_type_info_vector_dtor(type_info * _this, unsigned int f return _this; } +#if _MSVCR_VER >= 100 +typedef struct { + exception e; + HRESULT hr; +} scheduler_resource_allocation_error; +extern const vtable_ptr MSVCRT_scheduler_resource_allocation_error_vtable; + +/* ??0scheduler_resource_allocation_error@Concurrency@@QAE@PBDJ@Z */ +/* ??0scheduler_resource_allocation_error@Concurrency@@QEAA@PEBDJ@Z */ +DEFINE_THISCALL_WRAPPER(scheduler_resource_allocation_error_ctor_name, 12) +scheduler_resource_allocation_error* __thiscall scheduler_resource_allocation_error_ctor_name( + scheduler_resource_allocation_error *this, const char *name, HRESULT hr) +{ + TRACE("(%p %s %x)\n", this, wine_dbgstr_a(name), hr); + MSVCRT_exception_ctor(&this->e, &name); + this->e.vtable = &MSVCRT_scheduler_resource_allocation_error_vtable; + this->hr = hr; + return this; +} + +/* ??0scheduler_resource_allocation_error@Concurrency@@QAE@J@Z */ +/* ??0scheduler_resource_allocation_error@Concurrency@@QEAA@J@Z */ +DEFINE_THISCALL_WRAPPER(scheduler_resource_allocation_error_ctor, 8) +scheduler_resource_allocation_error* __thiscall scheduler_resource_allocation_error_ctor( + scheduler_resource_allocation_error *this, HRESULT hr) +{ + return scheduler_resource_allocation_error_ctor_name(this, NULL, hr); +} + +DEFINE_THISCALL_WRAPPER(MSVCRT_scheduler_resource_allocation_error_copy_ctor,8) +scheduler_resource_allocation_error* __thiscall MSVCRT_scheduler_resource_allocation_error_copy_ctor( + scheduler_resource_allocation_error *this, + const scheduler_resource_allocation_error *rhs) +{ + TRACE("(%p,%p)\n", this, rhs); + + if (!rhs->e.do_free) + memcpy(this, rhs, sizeof(*this)); + else + scheduler_resource_allocation_error_ctor_name(this, rhs->e.name, rhs->hr); + return this; +} + +/* ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QBEJXZ */ +/* ?get_error_code@scheduler_resource_allocation_error@Concurrency@@QEBAJXZ */ +DEFINE_THISCALL_WRAPPER(scheduler_resource_allocation_error_get_error_code, 4) +HRESULT __thiscall scheduler_resource_allocation_error_get_error_code( + const scheduler_resource_allocation_error *this) +{ + TRACE("(%p)\n", this); + return this->hr; +} + +DEFINE_THISCALL_WRAPPER(MSVCRT_scheduler_resource_allocation_error_dtor,4) +void __thiscall MSVCRT_scheduler_resource_allocation_error_dtor( + scheduler_resource_allocation_error * this) +{ + TRACE("(%p)\n", this); + MSVCRT_exception_dtor(&this->e); +} +#endif + #ifndef __GNUC__ void __asm_dummy_vtables(void) { #endif @@ -672,6 +734,11 @@ __ASM_VTABLE(bad_cast, __ASM_VTABLE(__non_rtti_object, VTABLE_ADD_FUNC(MSVCRT___non_rtti_object_vector_dtor) VTABLE_ADD_FUNC(MSVCRT_what_exception)); +#if _MSVCR_VER >= 100 +__ASM_VTABLE(scheduler_resource_allocation_error, + VTABLE_ADD_FUNC(MSVCRT_exception_vector_dtor) + VTABLE_ADD_FUNC(MSVCRT_what_exception)); +#endif #ifndef __GNUC__ } @@ -690,11 +757,18 @@ DEFINE_RTTI_DATA1( bad_typeid, 0, &exception_rtti_base_descriptor, ".?AVbad_type DEFINE_RTTI_DATA1( bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast@@" ) DEFINE_RTTI_DATA2( __non_rtti_object, 0, &bad_typeid_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AV__non_rtti_object@@" ) #endif +#if _MSVCR_VER >= 100 +DEFINE_RTTI_DATA1(scheduler_resource_allocation_error, 0, &exception_rtti_base_descriptor, + ".?AVscheduler_resource_allocation_error@Concurrency@@") +#endif DEFINE_EXCEPTION_TYPE_INFO( exception, 0, NULL, NULL ) DEFINE_EXCEPTION_TYPE_INFO( bad_typeid, 1, &exception_cxx_type_info, NULL ) DEFINE_EXCEPTION_TYPE_INFO( bad_cast, 1, &exception_cxx_type_info, NULL ) DEFINE_EXCEPTION_TYPE_INFO( __non_rtti_object, 2, &bad_typeid_cxx_type_info, &exception_cxx_type_info ) +#if _MSVCR_VER >= 100 +DEFINE_EXCEPTION_TYPE_INFO(scheduler_resource_allocation_error, 1, &exception_cxx_type_info, NULL) +#endif #if _MSVCR_VER >= 80 typedef exception bad_alloc; @@ -749,6 +823,9 @@ void msvcrt_init_exception(void *base) init_bad_typeid_rtti(base); init_bad_cast_rtti(base); init___non_rtti_object_rtti(base); +#if _MSVCR_VER >= 100 + init_scheduler_resource_allocation_error_rtti(base); +#endif init_exception_cxx(base); init_bad_typeid_cxx(base); @@ -757,6 +834,9 @@ void msvcrt_init_exception(void *base) #if _MSVCR_VER >= 80 init_bad_alloc_cxx(base); #endif +#if _MSVCR_VER >= 100 + init_scheduler_resource_allocation_erro_cxx(base); +#endif #endif } diff --git a/dlls/msvcrt/cxx.h b/dlls/msvcrt/cxx.h index baf519f..700ca8b 100644 --- a/dlls/msvcrt/cxx.h +++ b/dlls/msvcrt/cxx.h @@ -274,3 +274,5 @@ extern void *vtbl_wrapper_20; #define CALL_VTBL_FUNC(this, off, ret, type, args) ((ret (__cdecl***)type)this)[0][off/4]args #endif + +exception* __thiscall MSVCRT_exception_ctor(exception*, const char**);