From fde3bc0677ef984076bedeab1254deb34aaf0606 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 7 May 2020 19:04:49 +0300 Subject: [PATCH] rtworkq: Invoke cancelled waiting item with RTWQ_E_OPERATION_CANCELLED. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/rtworkq/queue.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/rtworkq/queue.c b/dlls/rtworkq/queue.c index ce06df1c8c1..07d124cfb73 100644 --- a/dlls/rtworkq/queue.c +++ b/dlls/rtworkq/queue.c @@ -866,7 +866,11 @@ static HRESULT queue_cancel_item(struct queue *queue, RTWQWORKITEM_KEY key) { key >>= 32; if ((key & WAIT_ITEM_KEY_MASK) == WAIT_ITEM_KEY_MASK) + { + IRtwqAsyncResult_SetStatus(item->result, RTWQ_E_OPERATION_CANCELLED); + invoke_async_callback(item->result); CloseThreadpoolWait(item->u.wait_object); + } else if ((key & SCHEDULED_ITEM_KEY_MASK) == SCHEDULED_ITEM_KEY_MASK) CloseThreadpoolTimer(item->u.timer_object); else