Jacek Caban : hlink: Wrap heap functions.

Alexandre Julliard julliard at winehq.org
Wed Nov 21 07:47:42 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Nov 21 02:13:58 2007 +0100

hlink: Wrap heap functions.

---

 dlls/hlink/browse_ctx.c    |   10 +++---
 dlls/hlink/hlink_main.c    |    1 -
 dlls/hlink/hlink_private.h |   47 +++++++++++++++++++++++++++
 dlls/hlink/link.c          |   75 +++++++++++++------------------------------
 4 files changed, 75 insertions(+), 58 deletions(-)

diff --git a/dlls/hlink/browse_ctx.c b/dlls/hlink/browse_ctx.c
index bd9b6fc..3b2f4b4 100644
--- a/dlls/hlink/browse_ctx.c
+++ b/dlls/hlink/browse_ctx.c
@@ -46,7 +46,7 @@ HRESULT WINAPI HLinkBrowseContext_Constructor(IUnknown *pUnkOuter, REFIID riid,
     if (pUnkOuter)
         return CLASS_E_NOAGGREGATION;
 
-    hl = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(HlinkBCImpl));
+    hl = hlink_alloc_zero(sizeof(HlinkBCImpl));
     if (!hl)
         return E_OUTOFMEMORY;
 
@@ -95,10 +95,10 @@ static ULONG WINAPI IHlinkBC_fnRelease (IHlinkBrowseContext* iface)
         return refCount;
 
     TRACE("-- destroying IHlinkBrowseContext (%p)\n", This);
-    HeapFree(GetProcessHeap(), 0, This->BrowseWindowInfo);
+    hlink_free(This->BrowseWindowInfo);
     if (This->CurrentPage)
         IHlink_Release(This->CurrentPage);
-    HeapFree(GetProcessHeap(), 0, This);
+    hlink_free(This);
     return 0;
 }
 
@@ -155,8 +155,8 @@ static HRESULT WINAPI IHlinkBC_SetBrowseWindowInfo(IHlinkBrowseContext* iface,
     HlinkBCImpl  *This = (HlinkBCImpl*)iface;
     TRACE("(%p)->(%p)\n", This, phlbwi);
 
-    HeapFree(GetProcessHeap(), 0, This->BrowseWindowInfo);
-    This->BrowseWindowInfo = HeapAlloc(GetProcessHeap(), 0, phlbwi->cbSize);
+    hlink_free(This->BrowseWindowInfo);
+    This->BrowseWindowInfo = hlink_alloc(phlbwi->cbSize);
     memcpy(This->BrowseWindowInfo, phlbwi, phlbwi->cbSize);
 
     return S_OK;
diff --git a/dlls/hlink/hlink_main.c b/dlls/hlink/hlink_main.c
index a68585f..e45bc0c 100644
--- a/dlls/hlink/hlink_main.c
+++ b/dlls/hlink/hlink_main.c
@@ -24,7 +24,6 @@
 #include "hlguids.h"
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(hlink);
 
diff --git a/dlls/hlink/hlink_private.h b/dlls/hlink/hlink_private.h
index 0a765be..ef381bd 100644
--- a/dlls/hlink/hlink_private.h
+++ b/dlls/hlink/hlink_private.h
@@ -27,5 +27,52 @@
 #include "ole2.h"
 #include "hlink.h"
 
+#include "wine/unicode.h"
+
 extern HRESULT WINAPI HLink_Constructor(IUnknown*,REFIID,void**);
 extern HRESULT WINAPI HLinkBrowseContext_Constructor(IUnknown*,REFIID,void**);
+
+static inline void *hlink_alloc(size_t len)
+{
+    return HeapAlloc(GetProcessHeap(), 0, len);
+}
+
+static inline void *hlink_alloc_zero(size_t len)
+{
+    return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
+}
+
+static inline BOOL hlink_free(void *mem)
+{
+    return HeapFree(GetProcessHeap(), 0, mem);
+}
+
+static inline LPWSTR hlink_strdupW(LPCWSTR str)
+{
+    LPWSTR ret = NULL;
+
+    if(str) {
+        DWORD size;
+
+        size = (strlenW(str)+1)*sizeof(WCHAR);
+        ret = hlink_alloc(size);
+        memcpy(ret, str, size);
+    }
+
+    return ret;
+}
+
+static inline LPWSTR hlink_co_strdupW(LPCWSTR str)
+{
+    LPWSTR ret = NULL;
+
+    if(str) {
+        DWORD size;
+
+        size = (strlenW(str)+1)*sizeof(WCHAR);
+        ret = CoTaskMemAlloc(size);
+        memcpy(ret, str, size);
+    }
+
+    return ret;
+}
diff --git a/dlls/hlink/link.c b/dlls/hlink/link.c
index e1eb6f9..179a179 100644
--- a/dlls/hlink/link.c
+++ b/dlls/hlink/link.c
@@ -24,7 +24,6 @@
 #include "hlguids.h"
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(hlink);
 
@@ -71,34 +70,6 @@ static inline HlinkImpl* HlinkImpl_from_IDataObject( IDataObject* iface)
     return (HlinkImpl*) ((CHAR*)iface - FIELD_OFFSET(HlinkImpl, lpDOVtbl));
 }
 
-static inline LPWSTR strdupW( LPCWSTR str )
-{
-    LPWSTR r;
-    UINT len;
-
-    if (!str)
-        return NULL;
-    len = (lstrlenW(str)+1) * sizeof (WCHAR);
-    r = HeapAlloc(GetProcessHeap(), 0, len);
-    if (r)
-        memcpy(r, str, len);
-    return r;
-}
-
-static inline LPWSTR co_strdupW( LPCWSTR str )
-{
-    LPWSTR r;
-    UINT len;
-
-    if (!str)
-        return NULL;
-    len = (lstrlenW(str)+1) * sizeof (WCHAR);
-    r = CoTaskMemAlloc(len);
-    if (r)
-        memcpy(r, str, len);
-    return r;
-}
-
 static inline void __GetMoniker(HlinkImpl* This, IMoniker** moniker)
 {
     *moniker = NULL;
@@ -127,7 +98,7 @@ HRESULT WINAPI HLink_Constructor(IUnknown *pUnkOuter, REFIID riid,
     if (pUnkOuter)
         return CLASS_E_NOAGGREGATION;
 
-    hl = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(HlinkImpl));
+    hl = hlink_alloc_zero(sizeof(HlinkImpl));
     if (!hl)
         return E_OUTOFMEMORY;
 
@@ -184,15 +155,15 @@ static ULONG WINAPI IHlink_fnRelease (IHlink* iface)
         return refCount;
 
     TRACE("-- destroying IHlink (%p)\n", This);
-    HeapFree(GetProcessHeap(), 0, This->FriendlyName);
-    HeapFree(GetProcessHeap(), 0, This->Target);
-    HeapFree(GetProcessHeap(), 0, This->TargetFrameName);
-    HeapFree(GetProcessHeap(), 0, This->Location);
+    hlink_free(This->FriendlyName);
+    hlink_free(This->Target);
+    hlink_free(This->TargetFrameName);
+    hlink_free(This->Location);
     if (This->Moniker)
         IMoniker_Release(This->Moniker);
     if (This->Site)
         IHlinkSite_Release(This->Site);
-    HeapFree(GetProcessHeap(), 0, This);
+    hlink_free(This);
     return 0;
 }
 
@@ -252,8 +223,8 @@ static HRESULT WINAPI IHlink_fnSetMonikerReference( IHlink* iface,
         CoTaskMemFree(display_name);
     }
 
-    HeapFree(GetProcessHeap(), 0, This->Location);
-    This->Location = strdupW( pwzLocation );
+    hlink_free(This->Location);
+    This->Location = hlink_strdupW( pwzLocation );
 
     return S_OK;
 }
@@ -268,13 +239,13 @@ static HRESULT WINAPI IHlink_fnSetStringReference(IHlink* iface,
 
     if (grfHLSETF & HLINKSETF_TARGET)
     {
-        HeapFree(GetProcessHeap(), 0, This->Target);
-        This->Target = strdupW( pwzTarget );
+        hlink_free(This->Target);
+        This->Target = hlink_strdupW( pwzTarget );
     }
     if (grfHLSETF & HLINKSETF_LOCATION)
     {
-        HeapFree(GetProcessHeap(), 0, This->Location);
-        This->Location = strdupW( pwzLocation );
+        hlink_free(This->Location);
+        This->Location = hlink_strdupW( pwzLocation );
     }
 
     return S_OK;
@@ -306,7 +277,7 @@ static HRESULT WINAPI IHlink_fnGetStringReference (IHlink* iface,
 
     if (ppwzTarget)
     {
-        *ppwzTarget = co_strdupW( This->Target );
+        *ppwzTarget = hlink_co_strdupW( This->Target );
 
         if (!This->Target)
         {
@@ -326,7 +297,7 @@ static HRESULT WINAPI IHlink_fnGetStringReference (IHlink* iface,
         }
     }
     if (ppwzLocation)
-        *ppwzLocation = co_strdupW( This->Location );
+        *ppwzLocation = hlink_co_strdupW( This->Location );
 
     TRACE("(Target: %s Location: %s)\n",
             (ppwzTarget)?debugstr_w(*ppwzTarget):"<NULL>",
@@ -342,8 +313,8 @@ static HRESULT WINAPI IHlink_fnSetFriendlyName (IHlink *iface,
 
     TRACE("(%p) -> (%s)\n", This, debugstr_w(pwzFriendlyName));
 
-    HeapFree(GetProcessHeap(), 0, This->FriendlyName);
-    This->FriendlyName = strdupW( pwzFriendlyName );
+    hlink_free(This->FriendlyName);
+    This->FriendlyName = hlink_strdupW( pwzFriendlyName );
 
     return S_OK;
 }
@@ -358,7 +329,7 @@ static HRESULT WINAPI IHlink_fnGetFriendlyName (IHlink* iface,
     /* FIXME: Only using explicitly set and cached friendly names */
 
     if (This->FriendlyName)
-        *ppwzFriendlyName = co_strdupW( This->FriendlyName );
+        *ppwzFriendlyName = hlink_co_strdupW( This->FriendlyName );
     else
     {
         IMoniker *moniker;
@@ -385,8 +356,8 @@ static HRESULT WINAPI IHlink_fnSetTargetFrameName(IHlink* iface,
     HlinkImpl  *This = (HlinkImpl*)iface;
     TRACE("(%p)->(%s)\n", This, debugstr_w(pwzTargetFramename));
 
-    HeapFree(GetProcessHeap(), 0, This->TargetFrameName);
-    This->TargetFrameName = strdupW( pwzTargetFramename );
+    hlink_free(This->TargetFrameName);
+    This->TargetFrameName = hlink_strdupW( pwzTargetFramename );
 
     return S_OK;
 }
@@ -397,7 +368,7 @@ static HRESULT WINAPI IHlink_fnGetTargetFrameName(IHlink* iface,
     HlinkImpl  *This = (HlinkImpl*)iface;
 
     TRACE("(%p)->(%p)\n", This, ppwzTargetFrameName);
-    *ppwzTargetFrameName = co_strdupW( This->TargetFrameName );
+    *ppwzTargetFrameName = hlink_co_strdupW( This->TargetFrameName );
 
     return S_OK;
 }
@@ -677,18 +648,18 @@ static HRESULT read_hlink_string(IStream *pStm, LPWSTR *out_str)
 
     TRACE("read len %d\n", len);
 
-    str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+    str = hlink_alloc(len * sizeof(WCHAR));
     if (!str) return E_OUTOFMEMORY;
 
     hr = IStream_Read(pStm, str, len * sizeof(WCHAR), &read);
     if (FAILED(hr))
     {
-        HeapFree(GetProcessHeap(), 0, str);
+        hlink_free(str);
         return hr;
     }
     if (read != len * sizeof(WCHAR))
     {
-        HeapFree(GetProcessHeap(), 0, str);
+        hlink_free(str);
         return STG_E_READFAULT;
     }
     TRACE("read string %s\n", debugstr_w(str));




More information about the wine-cvs mailing list