[PATCH] sxs: Use CRT memory allocation functions.

Nikolay Sivov nsivov at codeweavers.com
Wed Mar 30 01:48:15 CDT 2022


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/sxs/cache.c       | 76 +++++++++++++++++++++---------------------
 dlls/sxs/name.c        | 34 +++++++++----------
 dlls/sxs/sxs.c         |  6 ++--
 dlls/sxs/sxs_private.h | 10 ------
 4 files changed, 58 insertions(+), 68 deletions(-)

diff --git a/dlls/sxs/cache.c b/dlls/sxs/cache.c
index 02403501231..a924a359700 100644
--- a/dlls/sxs/cache.c
+++ b/dlls/sxs/cache.c
@@ -89,7 +89,7 @@ static ULONG WINAPI cache_Release( IAssemblyCache *iface )
     {
         TRACE("destroying %p\n", cache);
         CloseHandle( cache->lock );
-        HeapFree( GetProcessHeap(), 0, cache );
+        free( cache );
     }
     return refs;
 }
@@ -115,7 +115,7 @@ static WCHAR *build_assembly_name( const WCHAR *arch, const WCHAR *name, const W
     buflen += lstrlenW( name );
     buflen += lstrlenW( token );
     buflen += lstrlenW( version );
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) return NULL;
+    if (!(ret = malloc( buflen * sizeof(WCHAR) ))) return NULL;
     *len = swprintf( ret, buflen, fmtW, arch, name, token, version );
     return wcslwr( ret );
 }
@@ -128,15 +128,15 @@ static WCHAR *build_dll_path( const WCHAR *arch, const WCHAR *name, const WCHAR
 
     if (!(path = build_assembly_name( arch, name, token, version, &len ))) return NULL;
     len += build_sxs_path( sxsdir ) + 2;
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
+    if (!(ret = malloc( len * sizeof(WCHAR) )))
     {
-        HeapFree( GetProcessHeap(), 0, path );
+        free( path );
         return NULL;
     }
     lstrcpyW( ret, sxsdir );
     lstrcatW( ret, path );
     lstrcatW( ret, L"\\" );
-    HeapFree( GetProcessHeap(), 0, path );
+    free( path );
     return ret;
 }
 
@@ -151,7 +151,7 @@ static WCHAR *build_policy_name( const WCHAR *arch, const WCHAR *name, const WCH
     buflen += lstrlenW( arch );
     buflen += lstrlenW( name );
     buflen += lstrlenW( token );
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) return NULL;
+    if (!(ret = malloc( buflen * sizeof(WCHAR) ))) return NULL;
     *len = swprintf( ret, buflen, fmtW, arch, name, token );
     return wcslwr( ret );
 }
@@ -168,13 +168,13 @@ static WCHAR *build_policy_path( const WCHAR *arch, const WCHAR *name, const WCH
     len += ARRAY_SIZE(fmtW);
     len += build_sxs_path( sxsdir );
     len += lstrlenW( version );
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
+    if (!(ret = malloc( len * sizeof(WCHAR) )))
     {
-        HeapFree( GetProcessHeap(), 0, path );
+        free( path );
         return NULL;
     }
     swprintf( ret, len, fmtW, sxsdir, path, version );
-    HeapFree( GetProcessHeap(), 0, path );
+    free( path );
     return ret;
 }
 
@@ -259,7 +259,7 @@ static HRESULT WINAPI cache_QueryAssemblyInfo(
     }
 
 done:
-    HeapFree( GetProcessHeap(), 0, path );
+    free( path );
     IAssemblyName_Release( name_obj );
     cache_unlock( cache );
     return hr;
@@ -339,9 +339,9 @@ static void free_assembly( struct assembly *assembly )
         struct file *file = LIST_ENTRY( item, struct file, entry );
         list_remove( &file->entry );
         SysFreeString( file->name );
-        HeapFree( GetProcessHeap(), 0, file );
+        free( file );
     }
-    HeapFree( GetProcessHeap(), 0, assembly );
+    free( assembly );
 }
 
 static HRESULT parse_files( IXMLDOMDocument *doc, struct assembly *assembly )
@@ -386,7 +386,7 @@ static HRESULT parse_files( IXMLDOMDocument *doc, struct assembly *assembly )
         if (hr != S_OK)
             goto done;
 
-        if (!(f = HeapAlloc( GetProcessHeap(), 0, sizeof(struct file) )))
+        if (!(f = malloc( sizeof(*f) )))
         {
             IXMLDOMNamedNodeMap_Release( attrs );
             hr = E_OUTOFMEMORY;
@@ -397,7 +397,7 @@ static HRESULT parse_files( IXMLDOMDocument *doc, struct assembly *assembly )
         IXMLDOMNamedNodeMap_Release( attrs );
         if (!f->name)
         {
-            HeapFree( GetProcessHeap(), 0, f );
+            free( f );
             hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
             goto done;
         }
@@ -450,7 +450,7 @@ static HRESULT parse_assembly( IXMLDOMDocument *doc, struct assembly **assembly
         hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
         goto done;
     }
-    if (!(a = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct assembly) )))
+    if (!(a = calloc(1, sizeof(*a) )))
     {
         hr = E_OUTOFMEMORY;
         goto done;
@@ -497,9 +497,9 @@ static WCHAR *build_policy_filename( const WCHAR *arch, const WCHAR *name, const
     len += ARRAY_SIZE(policiesW) - 1;
     len += lstrlenW( version );
     len += ARRAY_SIZE(suffixW) - 1;
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) )))
+    if (!(ret = malloc( (len + 1) * sizeof(WCHAR) )))
     {
-        HeapFree( GetProcessHeap(), 0, fullname );
+        free( fullname );
         return NULL;
     }
     lstrcpyW( ret, sxsdir );
@@ -511,7 +511,7 @@ static WCHAR *build_policy_filename( const WCHAR *arch, const WCHAR *name, const
     lstrcatW( ret, version );
     lstrcatW( ret, suffixW );
 
-    HeapFree( GetProcessHeap(), 0, fullname );
+    free( fullname );
     return ret;
 }
 
@@ -526,7 +526,7 @@ static HRESULT install_policy( const WCHAR *manifest, struct assembly *assembly
     if (!dst) return E_OUTOFMEMORY;
 
     ret = CopyFileW( manifest, dst, FALSE );
-    HeapFree( GetProcessHeap(), 0, dst );
+    free( dst );
     if (!ret)
     {
         HRESULT hr = HRESULT_FROM_WIN32( GetLastError() );
@@ -544,10 +544,10 @@ static WCHAR *build_source_filename( const WCHAR *manifest, struct file *file )
 
     p = wcsrchr( manifest, '\\' );
     if (!p) p = wcsrchr( manifest, '/' );
-    if (!p) return strdupW( manifest );
+    if (!p) return wcsdup( manifest );
 
     len = p - manifest + 1;
-    if (!(src = HeapAlloc( GetProcessHeap(), 0, (len + lstrlenW( file->name ) + 1) * sizeof(WCHAR) )))
+    if (!(src = malloc( (len + lstrlenW( file->name ) + 1) * sizeof(WCHAR) )))
         return NULL;
 
     memcpy( src, manifest, len * sizeof(WCHAR) );
@@ -567,9 +567,9 @@ static WCHAR *build_manifest_filename( const WCHAR *arch, const WCHAR *name, con
     len += build_sxs_path( sxsdir );
     len += ARRAY_SIZE(manifestsW) - 1;
     len += ARRAY_SIZE(suffixW) - 1;
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) )))
+    if (!(ret = malloc( (len + 1) * sizeof(WCHAR) )))
     {
-        HeapFree( GetProcessHeap(), 0, fullname );
+        free( fullname );
         return NULL;
     }
     lstrcpyW( ret, sxsdir );
@@ -577,7 +577,7 @@ static WCHAR *build_manifest_filename( const WCHAR *arch, const WCHAR *name, con
     lstrcatW( ret, fullname );
     lstrcatW( ret, suffixW );
 
-    HeapFree( GetProcessHeap(), 0, fullname );
+    free( fullname );
     return ret;
 }
 
@@ -615,7 +615,7 @@ static HRESULT install_assembly( const WCHAR *manifest, struct assembly *assembl
     if (!dst) return E_OUTOFMEMORY;
 
     ret = CopyFileW( manifest, dst, FALSE );
-    HeapFree( GetProcessHeap(), 0, dst );
+    free( dst );
     if (!ret)
     {
         hr = HRESULT_FROM_WIN32( GetLastError() );
@@ -633,9 +633,9 @@ static HRESULT install_assembly( const WCHAR *manifest, struct assembly *assembl
         if (!(src = build_source_filename( manifest, file ))) goto done;
 
         len = len_sxsdir + len_name + lstrlenW( file->name );
-        if (!(dst = HeapAlloc( GetProcessHeap(), 0, (len + 2) * sizeof(WCHAR) )))
+        if (!(dst = malloc( (len + 2) * sizeof(WCHAR) )))
         {
-            HeapFree( GetProcessHeap(), 0, src );
+            free( src );
             goto done;
         }
         lstrcpyW( dst, sxsdir );
@@ -647,8 +647,8 @@ static HRESULT install_assembly( const WCHAR *manifest, struct assembly *assembl
         for (p = dst; *p; p++) *p = towlower( *p );
 
         ret = CopyFileW( src, dst, FALSE );
-        HeapFree( GetProcessHeap(), 0, src );
-        HeapFree( GetProcessHeap(), 0, dst );
+        free( src );
+        free( dst );
         if (!ret)
         {
             hr = HRESULT_FROM_WIN32( GetLastError() );
@@ -659,7 +659,7 @@ static HRESULT install_assembly( const WCHAR *manifest, struct assembly *assembl
     hr = S_OK;
 
 done:
-    HeapFree( GetProcessHeap(), 0, name );
+    free( name );
     return hr;
 }
 
@@ -711,7 +711,7 @@ static HRESULT uninstall_assembly( struct assembly *assembly )
     name = build_assembly_name( assembly->arch, assembly->name, assembly->token, assembly->version,
                                 &len_name );
     if (!name) return E_OUTOFMEMORY;
-    if (!(dirname = HeapAlloc( GetProcessHeap(), 0, (len_sxsdir + len_name + 1) * sizeof(WCHAR) )))
+    if (!(dirname = malloc( (len_sxsdir + len_name + 1) * sizeof(WCHAR) )))
         goto done;
     lstrcpyW( dirname, sxsdir );
     lstrcpyW( dirname + len_sxsdir, name );
@@ -719,20 +719,20 @@ static HRESULT uninstall_assembly( struct assembly *assembly )
     LIST_FOR_EACH_ENTRY( file, &assembly->files, struct file, entry )
     {
         len = len_sxsdir + len_name + 1 + lstrlenW( file->name );
-        if (!(filename = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) ))) goto done;
+        if (!(filename = malloc( (len + 1) * sizeof(WCHAR) ))) goto done;
         lstrcpyW( filename, dirname );
         lstrcatW( filename, backslashW );
         lstrcatW( filename, file->name );
 
         if (!DeleteFileW( filename )) WARN( "failed to delete file %lu\n", GetLastError() );
-        HeapFree( GetProcessHeap(), 0, filename );
+        free( filename );
     }
     RemoveDirectoryW( dirname );
     hr = S_OK;
 
 done:
-    HeapFree( GetProcessHeap(), 0, dirname );
-    HeapFree( GetProcessHeap(), 0, name );
+    free( dirname );
+    free( name );
     return hr;
 }
 
@@ -800,7 +800,7 @@ static HRESULT WINAPI cache_UninstallAssembly(
 
 done:
     if (name_obj) IAssemblyName_Release( name_obj );
-    HeapFree( GetProcessHeap(), 0, path );
+    free( path );
     free_assembly( assembly );
     if (doc) IXMLDOMDocument_Release( doc );
     if (SUCCEEDED(init)) CoUninitialize();
@@ -834,7 +834,7 @@ HRESULT WINAPI CreateAssemblyCache( IAssemblyCache **obj, DWORD reserved )
 
     *obj = NULL;
 
-    cache = HeapAlloc( GetProcessHeap(), 0, sizeof(struct cache) );
+    cache = malloc( sizeof(*cache) );
     if (!cache)
         return E_OUTOFMEMORY;
 
@@ -843,7 +843,7 @@ HRESULT WINAPI CreateAssemblyCache( IAssemblyCache **obj, DWORD reserved )
     cache->lock = CreateMutexW( NULL, FALSE, cache_mutex_nameW );
     if (!cache->lock)
     {
-        HeapFree( GetProcessHeap(), 0, cache );
+        free( cache );
         return HRESULT_FROM_WIN32( GetLastError() );
     }
     *obj = &cache->IAssemblyCache_iface;
diff --git a/dlls/sxs/name.c b/dlls/sxs/name.c
index 29368b6d788..4772c7317c5 100644
--- a/dlls/sxs/name.c
+++ b/dlls/sxs/name.c
@@ -88,12 +88,12 @@ static ULONG WINAPI name_Release( IAssemblyName *iface )
     if (!refs)
     {
         TRACE("destroying %p\n", name);
-        HeapFree( GetProcessHeap(), 0, name->name );
-        HeapFree( GetProcessHeap(), 0, name->arch );
-        HeapFree( GetProcessHeap(), 0, name->token );
-        HeapFree( GetProcessHeap(), 0, name->type );
-        HeapFree( GetProcessHeap(), 0, name->version );
-        HeapFree( GetProcessHeap(), 0, name );
+        free( name->name );
+        free( name->arch );
+        free( name->token );
+        free( name->type );
+        free( name->version );
+        free( name );
     }
     return refs;
 }
@@ -251,9 +251,9 @@ static HRESULT WINAPI name_GetVersion(
     TRACE("%p, %p, %p\n", iface, high, low);
 
     if (!name->version) return HRESULT_FROM_WIN32( ERROR_NOT_FOUND );
-    if (!(version = strdupW( name->version ))) return E_OUTOFMEMORY;
+    if (!(version = wcsdup( name->version ))) return E_OUTOFMEMORY;
     hr = parse_version( version, high, low );
-    HeapFree( GetProcessHeap(), 0, version );
+    free( version );
     return hr;
 }
 
@@ -300,7 +300,7 @@ static WCHAR *parse_value( const WCHAR *str, unsigned int *len )
     if (!*p) return NULL;
 
     *len = p - str;
-    if (!(ret = HeapAlloc( GetProcessHeap(), 0, *len * sizeof(WCHAR) ))) return NULL;
+    if (!(ret = malloc( *len * sizeof(WCHAR) ))) return NULL;
     memcpy( ret, str + 1, (*len - 1) * sizeof(WCHAR) );
     ret[*len - 1] = 0;
     return ret;
@@ -314,7 +314,7 @@ static HRESULT parse_displayname( struct name *name, const WCHAR *displayname )
     p = q = displayname;
     while (*q && *q != ',') q++;
     len = q - p;
-    if (!(name->name = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
+    if (!(name->name = malloc( (len + 1) * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
     memcpy( name->name, p, len * sizeof(WCHAR) );
     name->name[len] = 0;
     if (!*q) return S_OK;
@@ -376,7 +376,7 @@ HRESULT WINAPI CreateAssemblyNameObject(
     if (!assembly || !assembly[0] || flags != CANOF_PARSE_DISPLAY_NAME)
         return E_INVALIDARG;
 
-    if (!(name = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*name) )))
+    if (!(name = calloc(1, sizeof(*name) )))
         return E_OUTOFMEMORY;
 
     name->IAssemblyName_iface.lpVtbl = &name_vtbl;
@@ -385,12 +385,12 @@ HRESULT WINAPI CreateAssemblyNameObject(
     hr = parse_displayname( name, assembly );
     if (hr != S_OK)
     {
-        HeapFree( GetProcessHeap(), 0, name->name );
-        HeapFree( GetProcessHeap(), 0, name->arch );
-        HeapFree( GetProcessHeap(), 0, name->token );
-        HeapFree( GetProcessHeap(), 0, name->type );
-        HeapFree( GetProcessHeap(), 0, name->version );
-        HeapFree( GetProcessHeap(), 0, name );
+        free( name->name );
+        free( name->arch );
+        free( name->token );
+        free( name->type );
+        free( name->version );
+        free( name );
         return hr;
     }
     *obj = &name->IAssemblyName_iface;
diff --git a/dlls/sxs/sxs.c b/dlls/sxs/sxs.c
index 934aa9345c8..150a49a322f 100644
--- a/dlls/sxs/sxs.c
+++ b/dlls/sxs/sxs.c
@@ -19,11 +19,11 @@
  */
 
 #include <stdarg.h>
+#include <stdlib.h>
 
 #include "windef.h"
 #include "winbase.h"
 
-#include "wine/heap.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(sxs);
@@ -147,7 +147,7 @@ BOOL WINAPI SxsLookupClrGuid(DWORD flags, GUID *clsid, HANDLE actctx, void *buff
         goto out;
     }
 
-    assembly_info = heap_alloc(bytes_assembly_info);
+    assembly_info = malloc(bytes_assembly_info);
     if (!(retval = QueryActCtxW(0, guid_info.hActCtx, &guid_info.ulAssemblyRosterIndex,
             AssemblyDetailedInformationInActivationContext, assembly_info,
             bytes_assembly_info, &bytes_assembly_info)))
@@ -219,6 +219,6 @@ out:
     if (flags & SXS_LOOKUP_CLR_GUID_USE_ACTCTX)
         DeactivateActCtx(0, cookie);
 
-    heap_free(assembly_info);
+    free(assembly_info);
     return retval;
 }
diff --git a/dlls/sxs/sxs_private.h b/dlls/sxs/sxs_private.h
index c03e6db566e..4ae6bb8e2fc 100644
--- a/dlls/sxs/sxs_private.h
+++ b/dlls/sxs/sxs_private.h
@@ -26,13 +26,3 @@ enum name_attr_id
 };
 
 const WCHAR *get_name_attribute( IAssemblyName *, enum name_attr_id ) DECLSPEC_HIDDEN;
-
-static inline WCHAR *strdupW( const WCHAR *src )
-{
-    WCHAR *dst;
-
-    if (!src) return NULL;
-    dst = HeapAlloc( GetProcessHeap(), 0, (lstrlenW( src ) + 1) * sizeof(WCHAR) );
-    if (dst) lstrcpyW( dst, src );
-    return dst;
-}
-- 
2.35.1




More information about the wine-devel mailing list