Alistair Leslie-Hughes : dpnet: Close resets back to an uninitialized state.

Alexandre Julliard julliard at winehq.org
Thu Nov 3 14:26:20 CDT 2016


Module: wine
Branch: master
Commit: eef69511f5d1347af95ffb8556ec6e4712dd3afe
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=eef69511f5d1347af95ffb8556ec6e4712dd3afe

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Wed Nov  2 09:13:37 2016 +0000

dpnet: Close resets back to an uninitialized state.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 36df50d..de338d8 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();
 }




More information about the wine-cvs mailing list