Signed-off-by: Sven Baars sven.wine@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);