[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