From: Torge Matthies tmatthies@codeweavers.com
Signed-off-by: Torge Matthies tmatthies@codeweavers.com --- dlls/msvcrt/concurrency.c | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+)
diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index 7b1f1985da3..400efd89cc8 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -361,6 +361,9 @@ extern const vtable_ptr invalid_scheduler_policy_thread_specification_vtable; typedef exception invalid_scheduler_policy_value; extern const vtable_ptr invalid_scheduler_policy_value_vtable;
+typedef exception missing_wait; +extern const vtable_ptr missing_wait_vtable; + typedef struct { exception e; HRESULT hr; @@ -584,6 +587,34 @@ invalid_scheduler_policy_value * __thiscall invalid_scheduler_policy_value_copy_ return __exception_copy_ctor(_this, rhs, &invalid_scheduler_policy_value_vtable); }
+/* ??0missing_wait@Concurrency@@QAA@PBD@Z */ +/* ??0missing_wait@Concurrency@@QAE@PBD@Z */ +/* ??0missing_wait@Concurrency@@QEAA@PEBD@Z */ +DEFINE_THISCALL_WRAPPER(missing_wait_ctor_str, 8) +missing_wait* __thiscall missing_wait_ctor_str( + missing_wait *this, const char *str) +{ + TRACE("(%p %p)\n", this, str); + return __exception_ctor(this, str, &missing_wait_vtable); +} + +/* ??0missing_wait@Concurrency@@QAA@XZ */ +/* ??0missing_wait@Concurrency@@QAE@XZ */ +/* ??0missing_wait@Concurrency@@QEAA@XZ */ +DEFINE_THISCALL_WRAPPER(missing_wait_ctor, 4) +missing_wait* __thiscall missing_wait_ctor(missing_wait *this) +{ + return missing_wait_ctor_str(this, NULL); +} + +DEFINE_THISCALL_WRAPPER(missing_wait_copy_ctor,8) +missing_wait * __thiscall missing_wait_copy_ctor( + missing_wait * _this, const missing_wait * rhs) +{ + TRACE("(%p %p)\n", _this, rhs); + return __exception_copy_ctor(_this, rhs, &missing_wait_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) @@ -643,6 +674,8 @@ DEFINE_RTTI_DATA1(invalid_scheduler_policy_thread_specification, 0, &cexception_ ".?AVinvalid_scheduler_policy_thread_specification@Concurrency@@") DEFINE_RTTI_DATA1(invalid_scheduler_policy_value, 0, &cexception_rtti_base_descriptor, ".?AVinvalid_scheduler_policy_value@Concurrency@@") +DEFINE_RTTI_DATA1(missing_wait, 0, &cexception_rtti_base_descriptor, + ".?AVmissing_wait@Concurrency@@") DEFINE_RTTI_DATA1(scheduler_resource_allocation_error, 0, &cexception_rtti_base_descriptor, ".?AVscheduler_resource_allocation_error@Concurrency@@")
@@ -653,6 +686,9 @@ DEFINE_CXX_DATA1(invalid_multiple_scheduling, &cexception_cxx_type_info, cexcept DEFINE_CXX_DATA1(invalid_scheduler_policy_key, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_thread_specification, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_value, &cexception_cxx_type_info, cexception_dtor) +#if defined(__x86_64__) && _MSVCR_VER >= 120 +DEFINE_CXX_DATA1(missing_wait, &cexception_cxx_type_info, cexception_dtor) +#endif DEFINE_CXX_DATA1(scheduler_resource_allocation_error, &cexception_cxx_type_info, cexception_dtor)
__ASM_BLOCK_BEGIN(concurrency_exception_vtables) @@ -677,6 +713,9 @@ __ASM_BLOCK_BEGIN(concurrency_exception_vtables) __ASM_VTABLE(invalid_scheduler_policy_value, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); + __ASM_VTABLE(missing_wait, + VTABLE_ADD_FUNC(cexception_vector_dtor) + VTABLE_ADD_FUNC(cexception_what)); __ASM_VTABLE(scheduler_resource_allocation_error, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); @@ -3393,6 +3432,7 @@ void msvcrt_init_concurrency(void *base) init_invalid_scheduler_policy_key_rtti(base); init_invalid_scheduler_policy_thread_specification_rtti(base); init_invalid_scheduler_policy_value_rtti(base); + init_missing_wait_rtti(base); init_scheduler_resource_allocation_error_rtti(base); init_Context_rtti(base); init_ContextBase_rtti(base); @@ -3410,6 +3450,9 @@ void msvcrt_init_concurrency(void *base) init_invalid_scheduler_policy_key_cxx(base); init_invalid_scheduler_policy_thread_specification_cxx(base); init_invalid_scheduler_policy_value_cxx(base); +#if _MSVCR_VER >= 120 + init_missing_wait_cxx(base); +#endif init_scheduler_resource_allocation_error_cxx(base); #endif }