Huw Davies : ole32: Change the enum formatetc constructor to return HRESULT .

Alexandre Julliard julliard at winehq.org
Mon Mar 30 12:08:47 CDT 2009


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu Mar 26 16:38:57 2009 +0000

ole32: Change the enum formatetc constructor to return HRESULT.

---

 dlls/ole32/clipboard.c |   31 ++++++++++++++-----------------
 1 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c
index f973d2e..7d1bb26 100644
--- a/dlls/ole32/clipboard.c
+++ b/dlls/ole32/clipboard.c
@@ -303,7 +303,7 @@ static HRESULT WINAPI OLEClipbrd_IEnumFORMATETC_Reset(LPENUMFORMATETC iface)
   return S_OK;
 }
 
-static LPENUMFORMATETC OLEClipbrd_IEnumFORMATETC_Construct(UINT cfmt, const FORMATETC afmt[]);
+static HRESULT enum_fmtetc_construct(UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC **obj);
 
 /************************************************************************
  * OLEClipbrd_IEnumFORMATETC_Clone (IEnumFORMATETC)
@@ -321,8 +321,8 @@ static HRESULT WINAPI OLEClipbrd_IEnumFORMATETC_Clone
   if ( !ppenum )
     return E_INVALIDARG;
 
-  *ppenum = OLEClipbrd_IEnumFORMATETC_Construct(This->countFmt,
-                                                This->pFmt);
+  hr = enum_fmtetc_construct(This->countFmt, This->pFmt, ppenum);
+  if (FAILED(hr)) return hr;
 
   /* FIXME: This is wrong! */
   if (FAILED( hr = IEnumFORMATETC_AddRef(*ppenum)))
@@ -343,21 +343,20 @@ static const IEnumFORMATETCVtbl efvt =
 };
 
 /************************************************************************
- * OLEClipbrd_IEnumFORMATETC_Construct
+ * enum_fmtetc_construct
  *
  * Creates an IEnumFORMATETC enumerator from an array of FORMATETC
  * Structures.
  * NOTE: this does not AddRef the interface.
  */
-
-static LPENUMFORMATETC OLEClipbrd_IEnumFORMATETC_Construct(UINT cfmt, const FORMATETC afmt[])
+static HRESULT enum_fmtetc_construct(UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC **obj)
 {
   enum_fmtetc* ef;
   DWORD size=cfmt * sizeof(FORMATETC);
 
+  *obj = NULL;
   ef = HeapAlloc(GetProcessHeap(), 0, sizeof(*ef));
-  if (!ef)
-    return NULL;
+  if (!ef) return E_OUTOFMEMORY;
 
   ef->ref = 0;
   ef->lpVtbl = &efvt;
@@ -370,11 +369,12 @@ static LPENUMFORMATETC OLEClipbrd_IEnumFORMATETC_Construct(UINT cfmt, const FORM
   else
   {
     HeapFree(GetProcessHeap(), 0, ef);
-    return NULL;
+    return E_OUTOFMEMORY;
   }
 
   TRACE("(%p)->()\n",ef);
-  return (LPENUMFORMATETC)ef;
+  *obj = (IEnumFORMATETC *)ef;
+  return S_OK;
 }
 
 /***********************************************************************
@@ -1042,14 +1042,11 @@ static HRESULT WINAPI OLEClipbrd_IDataObject_EnumFormatEtc(
     afmt[i].tymed = TYMED_HGLOBAL;
   }
 
-  /*
-   * Create an EnumFORMATETC enumerator and return an
-   * EnumFORMATETC after bumping up its ref count
-   */
-  *ppenumFormatEtc = OLEClipbrd_IEnumFORMATETC_Construct( cfmt, afmt );
-  if (!(*ppenumFormatEtc))
-    HANDLE_ERROR( E_OUTOFMEMORY );
+  hr = enum_fmtetc_construct( cfmt, afmt, ppenumFormatEtc );
+  if (FAILED(hr))
+    HANDLE_ERROR( hr );
 
+  /* FIXME: This is wrong! */
   if (FAILED( hr = IEnumFORMATETC_AddRef(*ppenumFormatEtc)))
     HANDLE_ERROR( hr );
 




More information about the wine-cvs mailing list