[PATCH 2/3] dpnet: Close resets back to an uninitialized state
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Wed Nov 2 04:13:37 CDT 2016
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/dpnet/client.c | 9 ++++++---
dlls/dpnet/tests/client.c | 28 ++++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/dlls/dpnet/client.c b/dlls/dpnet/client.c
index bd11c13..03ef827 100644
--- a/dlls/dpnet/client.c
+++ b/dlls/dpnet/client.c
@@ -253,9 +253,12 @@ static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerAddress(IDirectPlay8Client
static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags)
{
- IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
- FIXME("(%p):(%x): Stub\n", This, dwFlags);
- return DPN_OK;
+ IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
+ FIXME("(%p):(%x): Stub\n", This, dwFlags);
+
+ This->msghandler = NULL;
+
+ return DPN_OK;
}
static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface,
diff --git a/dlls/dpnet/tests/client.c b/dlls/dpnet/tests/client.c
index cfa7e10..4753d74 100644
--- a/dlls/dpnet/tests/client.c
+++ b/dlls/dpnet/tests/client.c
@@ -319,6 +319,33 @@ static void test_cleanup_dp(void)
CoUninitialize();
}
+static void test_close(void)
+{
+ HRESULT hr;
+ static IDirectPlay8Client* client2;
+ DPN_SP_CAPS caps;
+
+ hr = CoCreateInstance(&CLSID_DirectPlay8Client, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectPlay8Client, (void **)&client2);
+ ok(hr == S_OK, "got 0x%x\n", hr);
+
+ memset(&caps, 0, sizeof(DPN_SP_CAPS));
+ caps.dwSize = sizeof(DPN_SP_CAPS);
+
+ hr = IDirectPlay8Client_Initialize(client2, NULL, DirectPlayMessageHandler, 0);
+ ok(hr == S_OK, "got %x\n", hr);
+
+ hr = IDirectPlay8Client_GetSPCaps(client2, &CLSID_DP8SP_TCPIP, &caps, 0);
+ ok(hr == DPN_OK, "got %x\n", hr);
+
+ hr = IDirectPlay8Client_Close(client2, 0);
+ ok(hr == DPN_OK, "got %x\n", hr);
+
+ hr = IDirectPlay8Client_GetSPCaps(client2, &CLSID_DP8SP_TCPIP, &caps, 0);
+ ok(hr == DPNERR_UNINITIALIZED, "got %x\n", hr);
+
+ IDirectPlay8Client_Release(client2);
+}
+
START_TEST(client)
{
if(!test_init_dp())
@@ -329,5 +356,6 @@ START_TEST(client)
test_get_sp_caps();
test_player_info();
test_lobbyclient();
+ test_close();
test_cleanup_dp();
}
--
1.9.1
More information about the wine-patches
mailing list