diff --git a/winpr/include/winpr/synch.h b/winpr/include/winpr/synch.h index 6d24a0cb9..809651c29 100644 --- a/winpr/include/winpr/synch.h +++ b/winpr/include/winpr/synch.h @@ -321,8 +321,8 @@ extern "C" WINPR_API BOOL DeleteTimerQueue(HANDLE TimerQueue); WINPR_API BOOL DeleteTimerQueueEx(HANDLE TimerQueue, HANDLE CompletionEvent); - WINPR_API BOOL CreateTimerQueueTimer(PHANDLE phNewTimer, HANDLE TimerQueue, - WAITORTIMERCALLBACK Callback, PVOID Parameter, + WINPR_API BOOL CreateTimerQueueTimer(HANDLE* phNewTimer, HANDLE TimerQueue, + WAITORTIMERCALLBACK Callback, void* Parameter, DWORD DueTime, DWORD Period, ULONG Flags); WINPR_API BOOL ChangeTimerQueueTimer(HANDLE TimerQueue, HANDLE Timer, ULONG DueTime, ULONG Period); diff --git a/winpr/libwinpr/synch/timer.c b/winpr/libwinpr/synch/timer.c index 6b40de177..61a682af5 100644 --- a/winpr/libwinpr/synch/timer.c +++ b/winpr/libwinpr/synch/timer.c @@ -990,25 +990,23 @@ BOOL DeleteTimerQueue(HANDLE TimerQueue) return DeleteTimerQueueEx(TimerQueue, NULL); } -BOOL CreateTimerQueueTimer(PHANDLE phNewTimer, HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, - PVOID Parameter, DWORD DueTime, DWORD Period, ULONG Flags) +BOOL CreateTimerQueueTimer(HANDLE* phNewTimer, HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, + void* Parameter, DWORD DueTime, DWORD Period, ULONG Flags) { - struct timespec CurrentTime; - WINPR_TIMER_QUEUE* timerQueue = NULL; - WINPR_TIMER_QUEUE_TIMER* timer = NULL; + struct timespec CurrentTime = { 0 }; if (!TimerQueue) return FALSE; timespec_gettimeofday(&CurrentTime); - timerQueue = (WINPR_TIMER_QUEUE*)TimerQueue; - timer = (WINPR_TIMER_QUEUE_TIMER*)malloc(sizeof(WINPR_TIMER_QUEUE_TIMER)); + WINPR_TIMER_QUEUE* timerQueue = (WINPR_TIMER_QUEUE*)TimerQueue; + WINPR_TIMER_QUEUE_TIMER* timer = calloc(1, sizeof(WINPR_TIMER_QUEUE_TIMER)); if (!timer) return FALSE; WINPR_HANDLE_SET_TYPE_AND_MODE(timer, HANDLE_TYPE_TIMER_QUEUE_TIMER, WINPR_FD_READ); - *((UINT_PTR*)phNewTimer) = (UINT_PTR)(HANDLE)timer; + *phNewTimer = (HANDLE)timer; timespec_copy(&(timer->StartTime), &CurrentTime); timespec_add_ms(&(timer->StartTime), DueTime); timespec_copy(&(timer->ExpirationTime), &(timer->StartTime));