atl: Simplify error handling in AtlAxAttachControl().
This commit is contained in:
parent
68f2b878d2
commit
2b390f01ed
@ -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;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user