[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