Andrew Eikum : oleaut32: Finish COM cleanup for internal loading structures .

Alexandre Julliard julliard at winehq.org
Fri May 10 11:17:57 CDT 2013


Module: wine
Branch: master
Commit: d7313b21e84028303adc9c3df1e5533383c4ec5b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d7313b21e84028303adc9c3df1e5533383c4ec5b

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Thu May  9 15:23:36 2013 -0500

oleaut32: Finish COM cleanup for internal loading structures.

---

 dlls/oleaut32/typelib.c |   27 +++++++++++++++++++++------
 1 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index b20d587..3d0c88e 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -2476,6 +2476,11 @@ typedef struct TLB_PEFile
     LPVOID typelib_base;
 } TLB_PEFile;
 
+static inline TLB_PEFile *pefile_impl_from_IUnknown(IUnknown *iface)
+{
+    return CONTAINING_RECORD(iface, TLB_PEFile, IUnknown_iface);
+}
+
 static HRESULT WINAPI TLB_PEFile_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
 {
     if (IsEqualIID(riid, &IID_IUnknown))
@@ -2490,13 +2495,13 @@ static HRESULT WINAPI TLB_PEFile_QueryInterface(IUnknown *iface, REFIID riid, vo
 
 static ULONG WINAPI TLB_PEFile_AddRef(IUnknown *iface)
 {
-    TLB_PEFile *This = (TLB_PEFile *)iface;
+    TLB_PEFile *This = pefile_impl_from_IUnknown(iface);
     return InterlockedIncrement(&This->refs);
 }
 
 static ULONG WINAPI TLB_PEFile_Release(IUnknown *iface)
 {
-    TLB_PEFile *This = (TLB_PEFile *)iface;
+    TLB_PEFile *This = pefile_impl_from_IUnknown(iface);
     ULONG refs = InterlockedDecrement(&This->refs);
     if (!refs)
     {
@@ -2571,6 +2576,11 @@ typedef struct TLB_NEFile
     LPVOID typelib_base;
 } TLB_NEFile;
 
+static inline TLB_NEFile *nefile_impl_from_IUnknown(IUnknown *iface)
+{
+    return CONTAINING_RECORD(iface, TLB_NEFile, IUnknown_iface);
+}
+
 static HRESULT WINAPI TLB_NEFile_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
 {
     if (IsEqualIID(riid, &IID_IUnknown))
@@ -2585,13 +2595,13 @@ static HRESULT WINAPI TLB_NEFile_QueryInterface(IUnknown *iface, REFIID riid, vo
 
 static ULONG WINAPI TLB_NEFile_AddRef(IUnknown *iface)
 {
-    TLB_NEFile *This = (TLB_NEFile *)iface;
+    TLB_NEFile *This = nefile_impl_from_IUnknown(iface);
     return InterlockedIncrement(&This->refs);
 }
 
 static ULONG WINAPI TLB_NEFile_Release(IUnknown *iface)
 {
-    TLB_NEFile *This = (TLB_NEFile *)iface;
+    TLB_NEFile *This = nefile_impl_from_IUnknown(iface);
     ULONG refs = InterlockedDecrement(&This->refs);
     if (!refs)
     {
@@ -2788,6 +2798,11 @@ typedef struct TLB_Mapping
     LPVOID typelib_base;
 } TLB_Mapping;
 
+static inline TLB_Mapping *mapping_impl_from_IUnknown(IUnknown *iface)
+{
+    return CONTAINING_RECORD(iface, TLB_Mapping, IUnknown_iface);
+}
+
 static HRESULT WINAPI TLB_Mapping_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
 {
     if (IsEqualIID(riid, &IID_IUnknown))
@@ -2802,13 +2817,13 @@ static HRESULT WINAPI TLB_Mapping_QueryInterface(IUnknown *iface, REFIID riid, v
 
 static ULONG WINAPI TLB_Mapping_AddRef(IUnknown *iface)
 {
-    TLB_Mapping *This = (TLB_Mapping *)iface;
+    TLB_Mapping *This = mapping_impl_from_IUnknown(iface);
     return InterlockedIncrement(&This->refs);
 }
 
 static ULONG WINAPI TLB_Mapping_Release(IUnknown *iface)
 {
-    TLB_Mapping *This = (TLB_Mapping *)iface;
+    TLB_Mapping *This = mapping_impl_from_IUnknown(iface);
     ULONG refs = InterlockedDecrement(&This->refs);
     if (!refs)
     {




More information about the wine-cvs mailing list