Module: wine Branch: master Commit: 25f1b058a8f8440bd7f9387590ffa49fcbb92c42 URL: http://source.winehq.org/git/wine.git/?a=commit;h=25f1b058a8f8440bd7f9387590...
Author: Huw Davies huw@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 );