Nikolay Sivov : atl: Simplify error handling in AtlAxAttachControl().

Alexandre Julliard julliard at winehq.org
Fri Apr 18 11:01:04 CDT 2014


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Apr 18 16:09:32 2014 +0400

atl: Simplify error handling in AtlAxAttachControl().

---

 dlls/atl/atl_ax.c       |   28 +++++++++++-----------------
 dlls/atl/tests/atl_ax.c |   10 +++-------
 2 files changed, 14 insertions(+), 24 deletions(-)

diff --git a/dlls/atl/atl_ax.c b/dlls/atl/atl_ax.c
index 0a16010..764c46e 100644
--- a/dlls/atl/atl_ax.c
+++ b/dlls/atl/atl_ax.c
@@ -949,12 +949,15 @@ static HRESULT IOCS_Init( IOCS *This )
 /**********************************************************************
  * Create new instance of Atl host component and attach it to window  *
  */
-static HRESULT IOCS_Create( HWND hWnd, IUnknown *pUnkControl, IOCS **ppSite )
+static HRESULT IOCS_Create( HWND hWnd, IUnknown *pUnkControl, IUnknown **container )
 {
     HRESULT hr;
     IOCS *This;
 
-    *ppSite = NULL;
+    if (!container)
+        return S_OK;
+
+    *container = NULL;
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(IOCS));
 
     if (!This)
@@ -975,7 +978,7 @@ static HRESULT IOCS_Create( HWND hWnd, IUnknown *pUnkControl, IOCS **ppSite )
     if ( SUCCEEDED( hr ) )
         hr = IOCS_Init( This );
     if ( SUCCEEDED( hr ) )
-        *ppSite = This;
+        *container = (IUnknown*)&This->IOleClientSite_iface;
     else
         IOCS_Release( This );
 
@@ -1102,26 +1105,17 @@ HRESULT WINAPI AtlAxCreateControlEx(LPCOLESTR lpszName, HWND hWnd,
 /***********************************************************************
  *           AtlAxAttachControl           [atl100.@]
  */
-HRESULT WINAPI AtlAxAttachControl(IUnknown* pControl, HWND hWnd, IUnknown** ppUnkContainer)
+HRESULT WINAPI AtlAxAttachControl(IUnknown *control, HWND hWnd, IUnknown **container)
 {
-    IOCS *pUnkContainer;
     HRESULT hr;
 
-    TRACE( "%p %p %p\n", pControl, hWnd, ppUnkContainer );
+    TRACE("(%p %p %p)\n", control, hWnd, container);
 
-    if (!pControl)
+    if (!control)
         return E_INVALIDARG;
 
-    hr = IOCS_Create( hWnd, pControl, &pUnkContainer );
-    if ( SUCCEEDED( hr ) && ppUnkContainer)
-    {
-        *ppUnkContainer = (IUnknown*) pUnkContainer;
-    }
-
-    if(!hWnd)
-        return S_FALSE;
-
-    return hr;
+    hr = IOCS_Create( hWnd, control, container );
+    return hWnd ? hr : S_FALSE;
 }
 
 /**********************************************************************
diff --git a/dlls/atl/tests/atl_ax.c b/dlls/atl/tests/atl_ax.c
index f2dad74..6b944d1 100644
--- a/dlls/atl/tests/atl_ax.c
+++ b/dlls/atl/tests/atl_ax.c
@@ -97,15 +97,11 @@ static void test_AtlAxAttachControl(void)
     hr = pAtlAxAttachControl(pObj, NULL, NULL);
     ok(hr == S_FALSE, "Expected AtlAxAttachControl to return S_FALSE, got 0x%08x\n", hr);
 
-    pContainer = (IUnknown *)0xdeadbeef;
+    pContainer = NULL;
     hr = pAtlAxAttachControl(pObj, NULL, &pContainer);
     ok(hr == S_FALSE, "Expected AtlAxAttachControl to return S_FALSE, got 0x%08x\n", hr);
-    ok(pContainer != (IUnknown *)0xdeadbeef &&
-       pContainer != NULL,
-       "Expected the output container pointer to be initialized to non-NULL, got %p\n", pContainer);
-
-    if (pContainer != (IUnknown *)0xdeadbeef && pContainer != NULL)
-        IUnknown_Release(pContainer);
+    ok(pContainer != NULL, "got %p\n", pContainer);
+    IUnknown_Release(pContainer);
 
     hr = pAtlAxAttachControl(pObj, hwnd, NULL);
     ok(hr == S_OK, "Expected AtlAxAttachControl to return S_OK, got 0x%08x\n", hr);




More information about the wine-cvs mailing list