Disconnect the server object from the stub on stub destruction.

This commit is contained in:
Mike Hearn 2004-07-30 18:43:27 +00:00 committed by Alexandre Julliard
parent 6cd1a7d9a9
commit 6545d994af
1 changed files with 12 additions and 0 deletions

View File

@ -1458,6 +1458,8 @@ TMStubImpl_QueryInterface(LPRPCSTUBBUFFER iface, REFIID riid, LPVOID *ppv) {
static ULONG WINAPI
TMStubImpl_AddRef(LPRPCSTUBBUFFER iface) {
ICOM_THIS(TMStubImpl,iface);
TRACE("(%p) before %lu\n", This, This->ref);
This->ref++;
return This->ref;
@ -1467,9 +1469,14 @@ static ULONG WINAPI
TMStubImpl_Release(LPRPCSTUBBUFFER iface) {
ICOM_THIS(TMStubImpl,iface);
TRACE("(%p) after %lu\n", This, This->ref-1);
This->ref--;
if (This->ref)
return This->ref;
IRpcStubBuffer_Disconnect(iface);
HeapFree(GetProcessHeap(),0,This);
return 0;
}
@ -1478,6 +1485,8 @@ static HRESULT WINAPI
TMStubImpl_Connect(LPRPCSTUBBUFFER iface, LPUNKNOWN pUnkServer) {
ICOM_THIS(TMStubImpl,iface);
TRACE("(%p)->(%p)\n", This, pUnkServer);
IUnknown_AddRef(pUnkServer);
This->pUnk = pUnkServer;
return S_OK;
@ -1487,6 +1496,8 @@ static void WINAPI
TMStubImpl_Disconnect(LPRPCSTUBBUFFER iface) {
ICOM_THIS(TMStubImpl,iface);
TRACE("(%p)->()\n", This);
IUnknown_Release(This->pUnk);
This->pUnk = NULL;
return;
@ -1736,6 +1747,7 @@ PSFacBuf_CreateStub(
memcpy(&(stub->iid),riid,sizeof(*riid));
hres = IRpcStubBuffer_Connect((LPRPCSTUBBUFFER)stub,pUnkServer);
*ppStub = (LPRPCSTUBBUFFER)stub;
TRACE("IRpcStubBuffer: %p\n", stub);
if (hres)
FIXME("Connect to pUnkServer failed?\n");
return hres;