Dmitry Timoshkov : mstask: Implement setting and getting a task comment using IExecAction.

Alexandre Julliard julliard at winehq.org
Fri Mar 30 12:32:36 CDT 2018


Module: wine
Branch: master
Commit: 52df130d29132578c8a5c2e2db6a77e50113c1fd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=52df130d29132578c8a5c2e2db6a77e50113c1fd

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Fri Mar 30 17:00:05 2018 +0800

mstask: Implement setting and getting a task comment using IExecAction.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mstask/task.c | 64 +++++++++++++++++++++---------------------------------
 1 file changed, 25 insertions(+), 39 deletions(-)

diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c
index ed0b984..5a40236 100644
--- a/dlls/mstask/task.c
+++ b/dlls/mstask/task.c
@@ -39,7 +39,6 @@ typedef struct
     ITaskDefinition *task;
     IExecAction *action;
     LPWSTR task_name;
-    LPWSTR comment;
     DWORD maxRunTime;
     LPWSTR accountName;
 } TaskImpl;
@@ -62,7 +61,6 @@ static void TaskDestructor(TaskImpl *This)
     ITaskDefinition_Release(This->task);
     HeapFree(GetProcessHeap(), 0, This->task_name);
     HeapFree(GetProcessHeap(), 0, This->accountName);
-    HeapFree(GetProcessHeap(), 0, This->comment);
     HeapFree(GetProcessHeap(), 0, This);
     InterlockedDecrement(&dll_ref);
 }
@@ -247,56 +245,45 @@ static HRESULT WINAPI MSTASK_ITask_GetExitCode(
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI MSTASK_ITask_SetComment(
-        ITask* iface,
-        LPCWSTR pwszComment)
+static HRESULT WINAPI MSTASK_ITask_SetComment(ITask *iface, LPCWSTR comment)
 {
-    DWORD n;
     TaskImpl *This = impl_from_ITask(iface);
-    LPWSTR tmp_comment;
 
-    TRACE("(%p, %s)\n", iface, debugstr_w(pwszComment));
+    TRACE("(%p, %s)\n", iface, debugstr_w(comment));
 
-    /* Empty comment */
-    if (pwszComment[0] == 0)
-    {
-        HeapFree(GetProcessHeap(), 0, This->comment);
-        This->comment = NULL;
-        return S_OK;
-    }
+    if (!comment || !comment[0])
+        comment = NULL;
 
-    /* Set to pwszComment */
-    n = (lstrlenW(pwszComment) + 1);
-    tmp_comment = HeapAlloc(GetProcessHeap(), 0, n * sizeof(WCHAR));
-    if (!tmp_comment)
-        return E_OUTOFMEMORY;
-    lstrcpyW(tmp_comment, pwszComment);
-    HeapFree(GetProcessHeap(), 0, This->comment);
-    This->comment = tmp_comment;
-
-    return S_OK;
+    return IExecAction_put_Id(This->action, (BSTR)comment);
 }
 
-static HRESULT WINAPI MSTASK_ITask_GetComment(
-        ITask* iface,
-        LPWSTR *ppwszComment)
+static HRESULT WINAPI MSTASK_ITask_GetComment(ITask *iface, LPWSTR *comment)
 {
-    DWORD n;
     TaskImpl *This = impl_from_ITask(iface);
+    HRESULT hr;
+    BSTR id;
+    DWORD len;
 
-    TRACE("(%p, %p)\n", iface, ppwszComment);
+    TRACE("(%p, %p)\n", iface, comment);
 
-    n = This->comment ? lstrlenW(This->comment) + 1 : 1;
-    *ppwszComment = CoTaskMemAlloc(n * sizeof(WCHAR));
-    if (!*ppwszComment)
-        return E_OUTOFMEMORY;
+    hr = IExecAction_get_Id(This->action, &id);
+    if (hr != S_OK) return hr;
 
-    if (!This->comment)
-        *ppwszComment[0] = 0;
+    len = id ? lstrlenW(id) + 1 : 1;
+    *comment = CoTaskMemAlloc(len * sizeof(WCHAR));
+    if (*comment)
+    {
+        if (!id)
+            *comment[0] = 0;
+        else
+            lstrcpyW(*comment, id);
+        hr = S_OK;
+    }
     else
-        lstrcpyW(*ppwszComment, This->comment);
+        hr =  E_OUTOFMEMORY;
 
-    return S_OK;
+    SysFreeString(id);
+    return hr;
 }
 
 static HRESULT WINAPI MSTASK_ITask_SetCreator(
@@ -798,7 +785,6 @@ HRESULT TaskConstructor(ITaskService *service, const WCHAR *task_name, ITask **t
     This->ref = 1;
     This->task = taskdef;
     This->task_name = heap_strdupW(task_name);
-    This->comment = NULL;
     This->accountName = NULL;
 
     /* Default time is 3 days = 259200000 ms */




More information about the wine-cvs mailing list