Michael Stefaniuc : compobj.dll16: COM cleanup for the IMalloc16 iface.
Alexandre Julliard
julliard at winehq.org
Thu Jan 20 12:41:21 CST 2011
Module: wine
Branch: master
Commit: c2f6d0597265cf837a0bac2b5ab6268d71ada557
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2f6d0597265cf837a0bac2b5ab6268d71ada557
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Thu Jan 20 02:00:29 2011 +0100
compobj.dll16: COM cleanup for the IMalloc16 iface.
---
dlls/compobj.dll16/compobj.c | 38 ++++++++++++++++++++++++--------------
1 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/dlls/compobj.dll16/compobj.c b/dlls/compobj.dll16/compobj.c
index 8b67322..f4b5d5d 100644
--- a/dlls/compobj.dll16/compobj.c
+++ b/dlls/compobj.dll16/compobj.c
@@ -88,17 +88,20 @@ static LPMALLOC16 currentMalloc16=NULL;
typedef struct
{
- /* IUnknown fields */
- const IMalloc16Vtbl *lpVtbl;
- DWORD ref;
- /* IMalloc16 fields */
+ IMalloc16 IMalloc16_iface;
+ DWORD ref;
} IMalloc16Impl;
+static inline IMalloc16Impl *impl_from_IMalloc16(IMalloc16 *iface)
+{
+ return CONTAINING_RECORD(iface, IMalloc16Impl, IMalloc16_iface);
+}
+
/******************************************************************************
* IMalloc16_QueryInterface [COMPOBJ.500]
*/
HRESULT CDECL IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) {
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
if ( !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
@@ -114,7 +117,8 @@ HRESULT CDECL IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *
* IMalloc16_AddRef [COMPOBJ.501]
*/
ULONG CDECL IMalloc16_fnAddRef(IMalloc16* iface) {
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->AddRef()\n",This);
return 1; /* cannot be freed */
}
@@ -123,7 +127,8 @@ ULONG CDECL IMalloc16_fnAddRef(IMalloc16* iface) {
* IMalloc16_Release [COMPOBJ.502]
*/
ULONG CDECL IMalloc16_fnRelease(IMalloc16* iface) {
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->Release()\n",This);
return 1; /* cannot be freed */
}
@@ -132,7 +137,8 @@ ULONG CDECL IMalloc16_fnRelease(IMalloc16* iface) {
* IMalloc16_Alloc [COMPOBJ.503]
*/
SEGPTR CDECL IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->Alloc(%d)\n",This,cb);
return MapLS( HeapAlloc( GetProcessHeap(), 0, cb ) );
}
@@ -143,7 +149,7 @@ SEGPTR CDECL IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
VOID CDECL IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
{
void *ptr = MapSL(pv);
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
TRACE("(%p)->Free(%08x)\n",This,pv);
UnMapLS(pv);
HeapFree( GetProcessHeap(), 0, ptr );
@@ -155,7 +161,8 @@ VOID CDECL IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
SEGPTR CDECL IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
{
SEGPTR ret;
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->Realloc(%08x,%d)\n",This,pv,cb);
if (!pv)
ret = IMalloc16_fnAlloc(iface, cb);
@@ -174,7 +181,8 @@ SEGPTR CDECL IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
*/
DWORD CDECL IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv)
{
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->GetSize(%08x)\n",This,pv);
return HeapSize( GetProcessHeap(), 0, MapSL(pv) );
}
@@ -183,7 +191,8 @@ DWORD CDECL IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv)
* IMalloc16_DidAlloc [COMPOBJ.507]
*/
INT16 CDECL IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) {
- IMalloc16 *This = iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->DidAlloc(%p)\n",This,pv);
return (INT16)-1;
}
@@ -192,7 +201,8 @@ INT16 CDECL IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) {
* IMalloc16_HeapMinimize [COMPOBJ.508]
*/
LPVOID CDECL IMalloc16_fnHeapMinimize(IMalloc16* iface) {
- IMalloc16Impl *This = (IMalloc16Impl *)iface;
+ IMalloc16Impl *This = impl_from_IMalloc16(iface);
+
TRACE("(%p)->HeapMinimize()\n",This);
return NULL;
}
@@ -224,7 +234,7 @@ IMalloc16_Constructor(void)
#undef VTENT
msegvt16 = MapLS( &vt16 );
}
- This->lpVtbl = (const IMalloc16Vtbl*)msegvt16;
+ This->IMalloc16_iface.lpVtbl = (const IMalloc16Vtbl*)msegvt16;
This->ref = 1;
return (LPMALLOC16)MapLS( This );
}
More information about the wine-cvs
mailing list