Nikolay Sivov (@nsivov) commented about dlls/rtworkq/queue.c:
if (item->work_object)
CloseThreadpoolWork(item->work_object);
switch(item->type) {
case WORK_ITEM_WORK:
if (item->u.work_object)
CloseThreadpoolWork(item->u.work_object);
break;
case WORK_ITEM_WAIT:
if (item->u.wait_object)
CloseThreadpoolWait(item->u.wait_object);
break;
case WORK_ITEM_TIMER:
if (item->u.timer_object)
CloseThreadpoolTimer(item->u.timer_object);
break;
}
I somehow convinced myself that cleanup groups take care of that, evidently not. Please reformat this a bit, to match how it's done in this file.