Huw Davies : ole32: Simplify some of the error handling.
Alexandre Julliard
julliard at winehq.org
Tue Mar 31 12:19:23 CDT 2009
Module: wine
Branch: master
Commit: 2c6be9521b04522750f208d4db1b218d517ee306
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2c6be9521b04522750f208d4db1b218d517ee306
Author: Huw Davies <huw at codeweavers.com>
Date: Mon Mar 30 15:33:28 2009 +0100
ole32: Simplify some of the error handling.
---
dlls/ole32/clipboard.c | 62 +++++++++++++----------------------------------
1 files changed, 17 insertions(+), 45 deletions(-)
diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c
index 66f620a..281bafc 100644
--- a/dlls/ole32/clipboard.c
+++ b/dlls/ole32/clipboard.c
@@ -821,8 +821,6 @@ static HRESULT WINAPI OLEClipbrd_IDataObject_GetData(
STGMEDIUM* pmedium)
{
HANDLE hData = 0;
- BOOL bClipboardOpen = FALSE;
- HRESULT hr = S_OK;
LPVOID src;
ole_clipbrd *This = impl_from_IDataObject(iface);
@@ -855,8 +853,7 @@ static HRESULT WINAPI OLEClipbrd_IDataObject_GetData(
/*
* Otherwise, get the data from the windows clipboard using GetClipboardData
*/
- if ( !(bClipboardOpen = OpenClipboard(theOleClipboard->hWndClipboard)) )
- HANDLE_ERROR( CLIPBRD_E_CANT_OPEN );
+ if ( !OpenClipboard(theOleClipboard->hWndClipboard)) return CLIPBRD_E_CANT_OPEN;
hData = GetClipboardData(pformatetcIn->cfFormat);
@@ -886,17 +883,8 @@ static HRESULT WINAPI OLEClipbrd_IDataObject_GetData(
pmedium->u.hGlobal = hData;
pmedium->pUnkForRelease = NULL;
- hr = S_OK;
+ if ( !CloseClipboard() ) return CLIPBRD_E_CANT_CLOSE;
-CLEANUP:
- /*
- * Close Windows clipboard
- */
- if ( bClipboardOpen && !CloseClipboard() )
- hr = CLIPBRD_E_CANT_CLOSE;
-
- if ( FAILED(hr) )
- return hr;
return (hData == 0) ? DV_E_FORMATETC : S_OK;
}
@@ -1356,7 +1344,6 @@ static HRESULT set_dataobject_format(HWND hwnd)
HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj)
{
HRESULT hr = S_OK;
- BOOL bClipboardOpen = FALSE;
struct oletls *info = COM_CurrentInfo();
TRACE("(%p)\n", pDataObj);
@@ -1367,9 +1354,6 @@ HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj)
if(!info->ole_inits)
return CO_E_NOTINITIALIZED;
- /*
- * Make sure we have a clipboard object
- */
OLEClipbrd_Initialize();
/*
@@ -1378,21 +1362,19 @@ HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj)
if ( !theOleClipboard->hWndClipboard )
theOleClipboard->hWndClipboard = OLEClipbrd_CreateWindow();
- if ( !theOleClipboard->hWndClipboard ) /* sanity check */
- HANDLE_ERROR( E_FAIL );
+ if ( !theOleClipboard->hWndClipboard ) return E_FAIL;
- /*
- * Open the Windows clipboard, associating it with our hidden window
- */
- if ( !(bClipboardOpen = OpenClipboard(theOleClipboard->hWndClipboard)) )
- HANDLE_ERROR( CLIPBRD_E_CANT_OPEN );
+ if ( !OpenClipboard(theOleClipboard->hWndClipboard) ) return CLIPBRD_E_CANT_OPEN;
/*
* Empty the current clipboard and make our window the clipboard owner
* NOTE: This will trigger a WM_DESTROYCLIPBOARD message
*/
if ( !EmptyClipboard() )
- HANDLE_ERROR( CLIPBRD_E_CANT_EMPTY );
+ {
+ hr = CLIPBRD_E_CANT_EMPTY;
+ goto end;
+ }
/*
* If we are already holding on to an IDataObject first release that.
@@ -1409,22 +1391,15 @@ HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj)
{
IDataObject_AddRef(theOleClipboard->pIDataObjectSrc);
hr = set_clipboard_formats(pDataObj);
- if(FAILED(hr)) goto CLEANUP;
+ if(FAILED(hr)) goto end;
}
hr = set_dataobject_format(theOleClipboard->hWndClipboard);
-CLEANUP:
+end:
- /*
- * Close Windows clipboard (It remains associated with our window)
- */
- if ( bClipboardOpen && !CloseClipboard() )
- hr = CLIPBRD_E_CANT_CLOSE;
+ if ( !CloseClipboard() ) hr = CLIPBRD_E_CANT_CLOSE;
- /*
- * Release the source IDataObject if something failed
- */
if ( FAILED(hr) )
{
if (theOleClipboard->pIDataObjectSrc)
@@ -1477,7 +1452,6 @@ HRESULT WINAPI OleFlushClipboard(void)
IEnumFORMATETC* penumFormatetc = NULL;
FORMATETC rgelt;
HRESULT hr = S_OK;
- BOOL bClipboardOpen = FALSE;
TRACE("()\n");
@@ -1489,8 +1463,8 @@ HRESULT WINAPI OleFlushClipboard(void)
if (!theOleClipboard->pIDataObjectSrc)
return S_OK;
- if ( !(bClipboardOpen = OpenClipboard(theOleClipboard->hWndClipboard)) )
- HANDLE_ERROR( CLIPBRD_E_CANT_OPEN );
+ if (!OpenClipboard(theOleClipboard->hWndClipboard))
+ return CLIPBRD_E_CANT_OPEN;
/*
* Render all HGLOBAL formats supported by the source into
@@ -1499,9 +1473,8 @@ HRESULT WINAPI OleFlushClipboard(void)
if ( FAILED( hr = IDataObject_EnumFormatEtc( theOleClipboard->pIDataObjectSrc,
DATADIR_GET,
&penumFormatetc) ))
- {
- HANDLE_ERROR( hr );
- }
+ goto end;
+
while ( S_OK == IEnumFORMATETC_Next(penumFormatetc, 1, &rgelt, NULL) )
{
@@ -1524,10 +1497,9 @@ HRESULT WINAPI OleFlushClipboard(void)
IDataObject_Release(theOleClipboard->pIDataObjectSrc);
theOleClipboard->pIDataObjectSrc = NULL;
-CLEANUP:
+end:
- if ( bClipboardOpen && !CloseClipboard() )
- hr = CLIPBRD_E_CANT_CLOSE;
+ if ( !CloseClipboard() ) hr = CLIPBRD_E_CANT_CLOSE;
return hr;
}
More information about the wine-cvs
mailing list