Disconnect proxies at COM shutdown to release the corresponding
stubs.
This commit is contained in:
parent
5e6487fe78
commit
819942339f
|
@ -512,6 +512,11 @@ void WINAPI CoUninitialize(void)
|
||||||
|
|
||||||
RunningObjectTableImpl_UnInitialize();
|
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 */
|
/* Release the references to the registered class objects */
|
||||||
COM_RevokeAllClasses();
|
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);
|
HRESULT MARSHAL_Find_Stub_Buffer(wine_marshal_id *mid,IRpcStubBuffer **stub);
|
||||||
void MARSHAL_Invalidate_Stub_From_MID(wine_marshal_id *mid);
|
void MARSHAL_Invalidate_Stub_From_MID(wine_marshal_id *mid);
|
||||||
|
HRESULT MARSHAL_Disconnect_Proxies();
|
||||||
|
|
||||||
HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv);
|
HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv);
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,18 @@ MARSHAL_Find_Proxy(wine_marshal_id *mid,LPUNKNOWN *punk) {
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
HRESULT
|
||||||
MARSHAL_Find_Proxy_Object(wine_marshal_id *mid,LPUNKNOWN *punk) {
|
MARSHAL_Find_Proxy_Object(wine_marshal_id *mid,LPUNKNOWN *punk) {
|
||||||
int i;
|
int i;
|
||||||
|
@ -359,6 +371,9 @@ StdMarshalImpl_UnmarshalInterface(
|
||||||
FIXME("Failed to create a proxy for %s\n",debugstr_guid(riid));
|
FIXME("Failed to create a proxy for %s\n",debugstr_guid(riid));
|
||||||
return hres;
|
return hres;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MARSHAL_Register_Proxy(&mid, (LPUNKNOWN) rpcproxy);
|
||||||
|
|
||||||
hres = PIPE_GetNewPipeBuf(&mid,&chanbuf);
|
hres = PIPE_GetNewPipeBuf(&mid,&chanbuf);
|
||||||
IPSFactoryBuffer_Release(psfacbuf);
|
IPSFactoryBuffer_Release(psfacbuf);
|
||||||
if (hres) {
|
if (hres) {
|
||||||
|
|
Loading…
Reference in New Issue