From e14e6bdeed2e72e40d83279f367e2997be23bf96 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 22 May 2018 16:18:30 +0800 Subject: [PATCH] mstask: Handle disabled tasks in ITask::GetNextRunTime(). Signed-off-by: Dmitry Timoshkov Signed-off-by: Alexandre Julliard --- dlls/mstask/task.c | 6 ++++++ dlls/mstask/tests/task_trigger.c | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c index 012bf486128..a201e44a1f4 100644 --- a/dlls/mstask/task.c +++ b/dlls/mstask/task.c @@ -476,6 +476,12 @@ static HRESULT WINAPI MSTASK_ITask_GetNextRunTime(ITask *iface, SYSTEMTIME *rt) TRACE("(%p, %p)\n", iface, rt); + if (This->flags & TASK_FLAG_DISABLED) + { + memset(rt, 0, sizeof(*rt)); + return SCHED_S_TASK_DISABLED; + } + GetLocalTime(¤t_st); for (i = 0; i < This->trigger_count; i++) diff --git a/dlls/mstask/tests/task_trigger.c b/dlls/mstask/tests/task_trigger.c index f7ab461aa9b..a89fa62d1c4 100644 --- a/dlls/mstask/tests/task_trigger.c +++ b/dlls/mstask/tests/task_trigger.c @@ -487,6 +487,19 @@ static void test_GetNextRunTime(void) if (0) /* crashes under Windows */ hr = ITask_GetNextRunTime(task, NULL); + hr = ITask_SetFlags(task, TASK_FLAG_DISABLED); + ok(hr == S_OK, "got %#x\n", hr); + + memset(&st, 0xff, sizeof(st)); + hr = ITask_GetNextRunTime(task, &st); + ok(hr == SCHED_S_TASK_DISABLED, "got %#x\n", hr); + ok(!memcmp(&st, &st_empty, sizeof(st)), "got %u/%u/%u wday %u %u:%02u:%02u\n", + st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, + st.wHour, st.wMinute, st.wSecond); + + hr = ITask_SetFlags(task, 0); + ok(hr == S_OK, "got %#x\n", hr); + memset(&st, 0xff, sizeof(st)); hr = ITask_GetNextRunTime(task, &st); ok(hr == SCHED_S_TASK_NO_VALID_TRIGGERS, "got %#x\n", hr); -- 2.11.4.GIT