{
PRTLP_WAIT Wait = (PRTLP_WAIT) Arg;
NTSTATUS Status;
- BOOLEAN alertable = (Wait->Flags & WT_EXECUTEINIOTHREAD) ? TRUE : FALSE;
+ BOOLEAN alertable = (Wait->Flags & WT_EXECUTEINIOTHREAD) != 0;
HANDLE handles[2] = { Wait->Object, Wait->CancelEvent };
LARGE_INTEGER timeout;
HANDLE completion_event;
if (Wait->Flags & WT_EXECUTEONLYONCE)
break;
}
- else
+ else if (Status != STATUS_USER_APC)
break;
}
Status = NtCreateEvent( &Wait->CancelEvent,
EVENT_ALL_ACCESS,
NULL,
- TRUE,
+ NotificationEvent,
FALSE );
if (Status != STATUS_SUCCESS)
return Status;
}
+ Flags = Flags & (WT_EXECUTEINIOTHREAD | WT_EXECUTEINPERSISTENTTHREAD |
+ WT_EXECUTELONGFUNCTION | WT_TRANSFER_IMPERSONATION);
+
Status = RtlQueueWorkItem( Wait_thread_proc,
Wait,
- Flags & ~WT_EXECUTEONLYONCE );
+ Flags );
if (Status != STATUS_SUCCESS)
{
Status = NtCreateEvent( &CompletionEvent,
EVENT_ALL_ACCESS,
NULL,
- TRUE,
+ NotificationEvent,
FALSE );
if (Status != STATUS_SUCCESS)
reactos/lib/rtl/actctx.c # Partly synced with WineStaging-1.7.55
reactos/lib/rtl/timerqueue.c # Partly synced with WineStaging-1.7.55
+reactos/lib/rtl/wait.c # Partly synced with WineStaging-1.7.55
advapi32 -
reactos/dll/win32/advapi32/wine/cred.c # Synced to WineStaging-1.7.55