rpcrt4: Tests for CStdStubBuffer_Disconnect and a tidy up of the implementation.
This commit is contained in:
parent
f42f727f7c
commit
487c691dc5
|
@ -149,13 +149,14 @@ HRESULT WINAPI CStdStubBuffer_Connect(LPRPCSTUBBUFFER iface,
|
||||||
|
|
||||||
void WINAPI CStdStubBuffer_Disconnect(LPRPCSTUBBUFFER iface)
|
void WINAPI CStdStubBuffer_Disconnect(LPRPCSTUBBUFFER iface)
|
||||||
{
|
{
|
||||||
CStdStubBuffer *This = (CStdStubBuffer *)iface;
|
CStdStubBuffer *This = (CStdStubBuffer *)iface;
|
||||||
TRACE("(%p)->Disconnect()\n",This);
|
IUnknown *old;
|
||||||
if (This->pvServerObject)
|
TRACE("(%p)->Disconnect()\n",This);
|
||||||
{
|
|
||||||
IUnknown_Release(This->pvServerObject);
|
old = InterlockedExchangePointer((void**)&This->pvServerObject, NULL);
|
||||||
This->pvServerObject = NULL;
|
|
||||||
}
|
if(old)
|
||||||
|
IUnknown_Release(old);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI CStdStubBuffer_Invoke(LPRPCSTUBBUFFER iface,
|
HRESULT WINAPI CStdStubBuffer_Invoke(LPRPCSTUBBUFFER iface,
|
||||||
|
|
|
@ -703,6 +703,19 @@ static void test_Connect(IPSFactoryBuffer *ppsf)
|
||||||
ok(connect_test_orig_release_called == 2, "release called %d\n", connect_test_orig_release_called);
|
ok(connect_test_orig_release_called == 2, "release called %d\n", connect_test_orig_release_called);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_Disconnect(IPSFactoryBuffer *ppsf)
|
||||||
|
{
|
||||||
|
IUnknownVtbl *orig_vtbl = &connect_test_orig_vtbl;
|
||||||
|
IUnknown *obj = (IUnknown*)&orig_vtbl;
|
||||||
|
IRpcStubBuffer *pstub = create_stub(ppsf, &IID_if1, obj, S_OK);
|
||||||
|
CStdStubBuffer *cstd_stub = (CStdStubBuffer*)pstub;
|
||||||
|
|
||||||
|
connect_test_orig_release_called = 0;
|
||||||
|
IRpcStubBuffer_Disconnect(pstub);
|
||||||
|
ok(connect_test_orig_release_called == 1, "release called %d\n", connect_test_orig_release_called);
|
||||||
|
ok(cstd_stub->pvServerObject == NULL, "pvServerObject %p\n", cstd_stub->pvServerObject);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST( cstub )
|
START_TEST( cstub )
|
||||||
{
|
{
|
||||||
IPSFactoryBuffer *ppsf;
|
IPSFactoryBuffer *ppsf;
|
||||||
|
@ -713,6 +726,7 @@ START_TEST( cstub )
|
||||||
test_NdrStubForwardingFunction();
|
test_NdrStubForwardingFunction();
|
||||||
test_CreateStub(ppsf);
|
test_CreateStub(ppsf);
|
||||||
test_Connect(ppsf);
|
test_Connect(ppsf);
|
||||||
|
test_Disconnect(ppsf);
|
||||||
|
|
||||||
OleUninitialize();
|
OleUninitialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue