Commit 81994233 authored by Mike Hearn's avatar Mike Hearn Committed by Alexandre Julliard

Disconnect proxies at COM shutdown to release the corresponding

stubs.
parent 5e6487fe
......@@ -512,6 +512,11 @@ void WINAPI CoUninitialize(void)
RunningObjectTableImpl_UnInitialize();
/* disconnect proxies to release the corresponding stubs.
* FIXME: native version might not do this and we might just be working
* around bugs elsewhere. */
MARSHAL_Disconnect_Proxies();
/* Release the references to the registered class objects */
COM_RevokeAllClasses();
......
......@@ -148,6 +148,7 @@ MARSHAL_Compare_Mids_NoInterface(wine_marshal_id *mid1, wine_marshal_id *mid2) {
HRESULT MARSHAL_Find_Stub_Buffer(wine_marshal_id *mid,IRpcStubBuffer **stub);
void MARSHAL_Invalidate_Stub_From_MID(wine_marshal_id *mid);
HRESULT MARSHAL_Disconnect_Proxies();
HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv);
......
......@@ -188,6 +188,18 @@ MARSHAL_Find_Proxy(wine_marshal_id *mid,LPUNKNOWN *punk) {
}
HRESULT
MARSHAL_Disconnect_Proxies() {
int i;
TRACE("Disconnecting %d proxies\n", nrofproxies);
for (i = 0; i < nrofproxies; i++)
IRpcProxyBuffer_Disconnect((IRpcProxyBuffer*)proxies[i].pUnk);
return S_OK;
}
HRESULT
MARSHAL_Find_Proxy_Object(wine_marshal_id *mid,LPUNKNOWN *punk) {
int i;
......@@ -359,6 +371,9 @@ StdMarshalImpl_UnmarshalInterface(
FIXME("Failed to create a proxy for %s\n",debugstr_guid(riid));
return hres;
}
MARSHAL_Register_Proxy(&mid, (LPUNKNOWN) rpcproxy);
hres = PIPE_GetNewPipeBuf(&mid,&chanbuf);
IPSFactoryBuffer_Release(psfacbuf);
if (hres) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment