From: Piotr Caban piotr@codeweavers.com
--- dlls/msvcrt/concurrency.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index ede70116f4a..075ee2f0b16 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -100,6 +100,7 @@ typedef struct { struct scheduler_list scheduler; unsigned int id; union allocator_cache_entry *allocator_cache[8]; + BOOL blocked; } ExternalContextBase; extern const vtable_ptr ExternalContextBase_vtable; static void ExternalContextBase_ctor(ExternalContextBase*); @@ -927,7 +928,13 @@ bool __thiscall ExternalContextBase_IsSynchronouslyBlocked(const ExternalContext DEFINE_THISCALL_WRAPPER(ExternalContextBase_Block, 4) void __thiscall ExternalContextBase_Block(ExternalContextBase *this) { - FIXME("(%p)->() stub\n", this); + BOOL blocked = TRUE; + + TRACE("(%p)->()\n", this); + + this->blocked = TRUE; + while (this->blocked) + RtlWaitOnAddress(&this->blocked, &blocked, sizeof(BOOL), NULL); }
DEFINE_THISCALL_WRAPPER(ExternalContextBase_Yield, 4)