From 2df92f74924cf7a0ab678422f8e159f4b7e2a97e Mon Sep 17 00:00:00 2001 From: Tau Date: Sat, 16 Mar 2019 12:47:55 -0400 Subject: [PATCH] util/async.c: Small locking fix --- util/async.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/async.c b/util/async.c index 38c53c2..a8094aa 100644 --- a/util/async.c +++ b/util/async.c @@ -60,6 +60,8 @@ HRESULT async_submit(struct async *async, struct irp *irp, async_task_t task) return task(async->ctx, irp); } + EnterCriticalSection(&async->lock); + if (async->thread == NULL) { /* Ensure our worker thread is running */ async->thread = (HANDLE) _beginthreadex( @@ -75,8 +77,6 @@ HRESULT async_submit(struct async *async, struct irp *irp, async_task_t task) } } - EnterCriticalSection(&async->lock); - while (async->task != NULL) { ok = SleepConditionVariableCS(&async->avail, &async->lock, INFINITE);