[PATCH] taskschd: Fix some server binding handle leaks (Valgrind).

Sven Baars sven.wine at gmail.com
Fri May 31 15:22:40 CDT 2019


Signed-off-by: Sven Baars <sven.wine at gmail.com>
---
 dlls/taskschd/task.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c
index 54b678244b..2a1d0d42b3 100644
--- a/dlls/taskschd/task.c
+++ b/dlls/taskschd/task.c
@@ -3691,6 +3691,8 @@ static ULONG WINAPI TaskService_Release(ITaskService *iface)
     {
         TRACE("destroying %p\n", iface);
         heap_free(task_svc);
+        if (rpc_handle)
+            RpcBindingFree(&rpc_handle);
     }
 
     return ref;
@@ -3881,11 +3883,14 @@ static HRESULT WINAPI TaskService_Connect(ITaskService *iface, VARIANT server, V
     hr = start_schedsvc();
     if (hr != S_OK) return hr;
 
-    hr = RpcStringBindingComposeW(NULL, ncalrpc, NULL, NULL, NULL, &binding_str);
-    if (hr != RPC_S_OK) return hr;
-    hr = RpcBindingFromStringBindingW(binding_str, &rpc_handle);
-    RpcStringFreeW(&binding_str);
-    if (hr != RPC_S_OK) return hr;
+    if (!rpc_handle)
+    {
+        hr = RpcStringBindingComposeW(NULL, ncalrpc, NULL, NULL, NULL, &binding_str);
+        if (hr != RPC_S_OK) return hr;
+        hr = RpcBindingFromStringBindingW(binding_str, &rpc_handle);
+        RpcStringFreeW(&binding_str);
+        if (hr != RPC_S_OK) return hr;
+    }
 
     /* Make sure that the connection works */
     hr = SchRpcHighestVersion(&task_svc->version);
-- 
2.17.1




More information about the wine-devel mailing list