Module: wine Branch: master Commit: 74ce3e53d41802a27f12fea2b6e94ec4c8ab464e URL: http://source.winehq.org/git/wine.git/?a=commit;h=74ce3e53d41802a27f12fea2b6...
Author: Michael Stefaniuc mstefani@redhat.de Date: Wed Dec 29 02:53:23 2010 +0100
oleaut32/tests: COM cleanup for usrmarshal.c.
---
dlls/oleaut32/tests/usrmarshal.c | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/dlls/oleaut32/tests/usrmarshal.c b/dlls/oleaut32/tests/usrmarshal.c index 1aae0f5..def1c15 100644 --- a/dlls/oleaut32/tests/usrmarshal.c +++ b/dlls/oleaut32/tests/usrmarshal.c @@ -19,6 +19,7 @@ */
#define COBJMACROS +#define CONST_VTABLE
#include <stdarg.h>
@@ -669,10 +670,15 @@ static void test_marshal_BSTR(void)
typedef struct { - const IUnknownVtbl *lpVtbl; + IUnknown IUnknown_iface; ULONG refs; } HeapUnknown;
+static inline HeapUnknown *impl_from_IUnknown(IUnknown *iface) +{ + return CONTAINING_RECORD(iface, HeapUnknown, IUnknown_iface); +} + static HRESULT WINAPI HeapUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) { if (IsEqualIID(riid, &IID_IUnknown)) @@ -687,13 +693,13 @@ static HRESULT WINAPI HeapUnknown_QueryInterface(IUnknown *iface, REFIID riid, v
static ULONG WINAPI HeapUnknown_AddRef(IUnknown *iface) { - HeapUnknown *This = (HeapUnknown *)iface; + HeapUnknown *This = impl_from_IUnknown(iface); return InterlockedIncrement((LONG*)&This->refs); }
static ULONG WINAPI HeapUnknown_Release(IUnknown *iface) { - HeapUnknown *This = (HeapUnknown *)iface; + HeapUnknown *This = impl_from_IUnknown(iface); ULONG refs = InterlockedDecrement((LONG*)&This->refs); if (!refs) HeapFree(GetProcessHeap(), 0, This); return refs; @@ -1437,12 +1443,12 @@ static void test_marshal_VARIANT(void)
/*** UNKNOWN ***/ heap_unknown = HeapAlloc(GetProcessHeap(), 0, sizeof(*heap_unknown)); - heap_unknown->lpVtbl = &HeapUnknown_Vtbl; + heap_unknown->IUnknown_iface.lpVtbl = &HeapUnknown_Vtbl; heap_unknown->refs = 1; VariantInit(&v); VariantInit(&v2); V_VT(&v) = VT_UNKNOWN; - V_UNKNOWN(&v) = (IUnknown *)heap_unknown; + V_UNKNOWN(&v) = &heap_unknown->IUnknown_iface;
rpcMsg.BufferLength = stubMsg.BufferLength = VARIANT_UserSize(&umcb.Flags, 0, &v); ok(stubMsg.BufferLength > 32, "size %d\n", stubMsg.BufferLength); @@ -1471,7 +1477,7 @@ static void test_marshal_VARIANT(void) VARIANT v3; VariantInit(&v3); V_VT(&v3) = VT_UNKNOWN; - V_UNKNOWN(&v3) = (IUnknown *)heap_unknown; + V_UNKNOWN(&v3) = &heap_unknown->IUnknown_iface; IUnknown_AddRef(V_UNKNOWN(&v3)); stubMsg.Buffer = buffer; next = VARIANT_UserUnmarshal(&umcb.Flags, buffer, &v3); @@ -1479,7 +1485,7 @@ static void test_marshal_VARIANT(void) ok(V_UNKNOWN(&v) == V_UNKNOWN(&v3), "got %p expect %p\n", V_UNKNOWN(&v), V_UNKNOWN(&v3)); VARIANT_UserFree(&umcb.Flags, &v3); ok(heap_unknown->refs == 1, "%d refcounts of IUnknown leaked\n", heap_unknown->refs - 1); - IUnknown_Release((IUnknown *)heap_unknown); + IUnknown_Release(&heap_unknown->IUnknown_iface); } HeapFree(GetProcessHeap(), 0, oldbuffer);
@@ -1509,7 +1515,7 @@ static void test_marshal_VARIANT(void)
/*** UNKNOWN BYREF ***/ heap_unknown = HeapAlloc(GetProcessHeap(), 0, sizeof(*heap_unknown)); - heap_unknown->lpVtbl = &HeapUnknown_Vtbl; + heap_unknown->IUnknown_iface.lpVtbl = &HeapUnknown_Vtbl; heap_unknown->refs = 1; VariantInit(&v); VariantInit(&v2); @@ -1545,7 +1551,7 @@ static void test_marshal_VARIANT(void) VARIANT v3; VariantInit(&v3); V_VT(&v3) = VT_UNKNOWN; - V_UNKNOWN(&v3) = (IUnknown *)heap_unknown; + V_UNKNOWN(&v3) = &heap_unknown->IUnknown_iface; IUnknown_AddRef(V_UNKNOWN(&v3)); stubMsg.Buffer = buffer; next = VARIANT_UserUnmarshal(&umcb.Flags, buffer, &v3); @@ -1553,7 +1559,7 @@ static void test_marshal_VARIANT(void) ok(*V_UNKNOWNREF(&v) == *V_UNKNOWNREF(&v3), "got %p expect %p\n", *V_UNKNOWNREF(&v), *V_UNKNOWNREF(&v3)); VARIANT_UserFree(&umcb.Flags, &v3); ok(heap_unknown->refs == 1, "%d refcounts of IUnknown leaked\n", heap_unknown->refs - 1); - IUnknown_Release((IUnknown *)heap_unknown); + IUnknown_Release(&heap_unknown->IUnknown_iface); } HeapFree(GetProcessHeap(), 0, oldbuffer); }