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