shell32/tests: COM cleanup in shlfolder.c.

Michael Stefaniuc mstefani at redhat.de
Tue Apr 26 16:45:13 CDT 2011


---
 dlls/shell32/tests/shlfolder.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c
index cc68280..681a28f 100644
--- a/dlls/shell32/tests/shlfolder.c
+++ b/dlls/shell32/tests/shlfolder.c
@@ -2965,7 +2965,7 @@ cleanup:
 /**************************************************************/
 /* IUnknown implementation for counting QueryInterface calls. */
 typedef struct {
-    const IUnknownVtbl *lpVtbl;
+    IUnknown IUnknown_iface;
     struct if_count {
         REFIID id;
         LONG count;
@@ -2973,9 +2973,14 @@ typedef struct {
     LONG unknown;
 } IUnknownImpl;
 
+static inline IUnknownImpl *impl_from_IUnknown(IUnknown *iface)
+{
+    return CONTAINING_RECORD(iface, IUnknownImpl, IUnknown_iface);
+}
+
 static HRESULT WINAPI unk_fnQueryInterface(IUnknown *iunk, REFIID riid, void** punk)
 {
-    IUnknownImpl *This = (IUnknownImpl*)iunk;
+    IUnknownImpl *This = impl_from_IUnknown(iunk);
     UINT i, found;
     for(i = found = 0; This->ifaces[i].id != NULL; i++)
     {
@@ -3042,7 +3047,7 @@ static void test_SHGetIDListFromObject(void)
     ok(hres == E_NOINTERFACE, "Got %x\n", hres);
 
     punkimpl = HeapAlloc(GetProcessHeap(), 0, sizeof(IUnknownImpl));
-    punkimpl->lpVtbl = &vt_IUnknown;
+    punkimpl->IUnknown_iface.lpVtbl = &vt_IUnknown;
     punkimpl->ifaces = ifaces;
     punkimpl->unknown = 0;
 
@@ -3213,7 +3218,7 @@ static void test_SHGetItemFromObject(void)
     ok(hres == E_NOINTERFACE, "Got 0x%08x\n", hres);
 
     punkimpl = HeapAlloc(GetProcessHeap(), 0, sizeof(IUnknownImpl));
-    punkimpl->lpVtbl = &vt_IUnknown;
+    punkimpl->IUnknown_iface.lpVtbl = &vt_IUnknown;
     punkimpl->ifaces = ifaces;
     punkimpl->unknown = 0;
 
-- 
1.7.4.4



More information about the wine-patches mailing list