Huw Davies : ole32: Add a helper to copy FORMATETC structures.
Alexandre Julliard
julliard at winehq.org
Thu May 18 15:27:50 CDT 2017
Module: wine
Branch: master
Commit: 11db49190bb531796ac3e8e86c2f67b5f60d39dc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=11db49190bb531796ac3e8e86c2f67b5f60d39dc
Author: Huw Davies <huw at codeweavers.com>
Date: Thu May 18 11:07:02 2017 +0100
ole32: Add a helper to copy FORMATETC structures.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ole32/compobj_private.h | 12 ++++++++++++
dlls/ole32/oleobj.c | 16 ++++++++--------
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/dlls/ole32/compobj_private.h b/dlls/ole32/compobj_private.h
index 6488287..8bab819 100644
--- a/dlls/ole32/compobj_private.h
+++ b/dlls/ole32/compobj_private.h
@@ -334,4 +334,16 @@ static inline BOOL heap_free(void *mem)
return HeapFree(GetProcessHeap(), 0, mem);
}
+static inline HRESULT copy_formatetc(FORMATETC *dst, const FORMATETC *src)
+{
+ *dst = *src;
+ if (src->ptd)
+ {
+ dst->ptd = CoTaskMemAlloc( src->ptd->tdSize );
+ if (!dst->ptd) return E_OUTOFMEMORY;
+ memcpy( dst->ptd, src->ptd, src->ptd->tdSize );
+ }
+ return S_OK;
+}
+
#endif /* __WINE_OLE_COMPOBJ_H */
diff --git a/dlls/ole32/oleobj.c b/dlls/ole32/oleobj.c
index edbef55..17ab8d0 100644
--- a/dlls/ole32/oleobj.c
+++ b/dlls/ole32/oleobj.c
@@ -56,14 +56,14 @@ static void release_statdata(STATDATA *data)
static HRESULT copy_statdata(STATDATA *dst, const STATDATA *src)
{
- *dst = *src;
- if(src->formatetc.ptd)
- {
- dst->formatetc.ptd = CoTaskMemAlloc(src->formatetc.ptd->tdSize);
- if(!dst->formatetc.ptd) return E_OUTOFMEMORY;
- memcpy(dst->formatetc.ptd, src->formatetc.ptd, src->formatetc.ptd->tdSize);
- }
- if(dst->pAdvSink) IAdviseSink_AddRef(dst->pAdvSink);
+ HRESULT hr;
+
+ hr = copy_formatetc( &dst->formatetc, &src->formatetc );
+ if (FAILED(hr)) return hr;
+ dst->advf = src->advf;
+ dst->pAdvSink = src->pAdvSink;
+ if (dst->pAdvSink) IAdviseSink_AddRef( dst->pAdvSink );
+ dst->dwConnection = src->dwConnection;
return S_OK;
}
More information about the wine-cvs
mailing list