[PATCH] fusion: Use CRT memory allocation functions.

Nikolay Sivov nsivov at codeweavers.com
Wed Mar 30 01:47:46 CDT 2022


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/fusion/asmcache.c   | 44 +++++++++++++++++++-------------------
 dlls/fusion/asmenum.c    | 14 ++++++------
 dlls/fusion/asmname.c    | 46 +++++++++++++++++++---------------------
 dlls/fusion/assembly.c   | 26 +++++++++++------------
 dlls/fusion/fusionpriv.h | 14 ------------
 5 files changed, 64 insertions(+), 80 deletions(-)

diff --git a/dlls/fusion/asmcache.c b/dlls/fusion/asmcache.c
index b9cb505de86..88805bb354b 100644
--- a/dlls/fusion/asmcache.c
+++ b/dlls/fusion/asmcache.c
@@ -62,7 +62,7 @@ static BOOL create_full_path(LPCWSTR path)
     BOOL ret = TRUE;
     int len;
 
-    if (!(new_path = heap_alloc((lstrlenW(path) + 1) * sizeof(WCHAR)))) return FALSE;
+    if (!(new_path = malloc((lstrlenW(path) + 1) * sizeof(WCHAR)))) return FALSE;
 
     lstrcpyW(new_path, path);
 
@@ -100,7 +100,7 @@ static BOOL create_full_path(LPCWSTR path)
         new_path[len] = '\\';
     }
 
-    heap_free(new_path);
+    free(new_path);
     return ret;
 }
 
@@ -197,7 +197,7 @@ static ULONG WINAPI IAssemblyCacheImpl_Release(IAssemblyCache *iface)
     if (!refCount)
     {
         CloseHandle( cache->lock );
-        heap_free( cache );
+        free( cache );
     }
     return refCount;
 }
@@ -255,7 +255,7 @@ static HRESULT WINAPI IAssemblyCacheImpl_UninstallAssembly(IAssemblyCache *iface
     if (hr != HRESULT_FROM_WIN32( ERROR_INSUFFICIENT_BUFFER ))
         goto done;
 
-    if (!(path = heap_alloc( len * sizeof(WCHAR) )))
+    if (!(path = malloc( len * sizeof(WCHAR) )))
     {
         hr = E_OUTOFMEMORY;
         goto done;
@@ -290,7 +290,7 @@ done:
     IAssemblyName_Release( asmname );
     if (next) IAssemblyName_Release( next );
     if (asmenum) IAssemblyEnum_Release( asmenum );
-    heap_free( path );
+    free( path );
     cache_unlock( cache );
     return hr;
 }
@@ -372,7 +372,7 @@ static HRESULT WINAPI IAssemblyCacheImpl_CreateAssemblyCacheItem(IAssemblyCache
 
     *ppAsmItem = NULL;
 
-    if (!(item = heap_alloc(sizeof(*item)))) return E_OUTOFMEMORY;
+    if (!(item = malloc(sizeof(*item)))) return E_OUTOFMEMORY;
 
     item->IAssemblyCacheItem_iface.lpVtbl = &AssemblyCacheItemVtbl;
     item->ref = 1;
@@ -395,22 +395,22 @@ static HRESULT copy_file( const WCHAR *src_dir, DWORD src_len, const WCHAR *dst_
     DWORD len = lstrlenW( filename );
     HRESULT hr = S_OK;
 
-    if (!(src_file = heap_alloc( (src_len + len + 1) * sizeof(WCHAR) )))
+    if (!(src_file = malloc( (src_len + len + 1) * sizeof(WCHAR) )))
         return E_OUTOFMEMORY;
     memcpy( src_file, src_dir, src_len * sizeof(WCHAR) );
     lstrcpyW( src_file + src_len, filename );
 
-    if (!(dst_file = heap_alloc( (dst_len + len + 1) * sizeof(WCHAR) )))
+    if (!(dst_file = malloc( (dst_len + len + 1) * sizeof(WCHAR) )))
     {
-        heap_free( src_file );
+        free( src_file );
         return E_OUTOFMEMORY;
     }
     memcpy( dst_file, dst_dir, dst_len * sizeof(WCHAR) );
     lstrcpyW( dst_file + dst_len, filename );
 
     if (!CopyFileW( src_file, dst_file, FALSE )) hr = HRESULT_FROM_WIN32( GetLastError() );
-    heap_free( src_file );
-    heap_free( dst_file );
+    free( src_file );
+    free( dst_file );
     return hr;
 }
 
@@ -483,7 +483,7 @@ static HRESULT WINAPI IAssemblyCacheImpl_InstallAssembly(IAssemblyCache *iface,
     get_assembly_directory(asmdir, MAX_PATH, clr_version, architecture);
 
     dst_len += lstrlenW(asmdir) + lstrlenW(name) + lstrlenW(version) + lstrlenW(token);
-    if (!(dst_dir = heap_alloc(dst_len * sizeof(WCHAR))))
+    if (!(dst_dir = malloc(dst_len * sizeof(WCHAR))))
     {
         hr = E_OUTOFMEMORY;
         goto done;
@@ -523,13 +523,13 @@ static HRESULT WINAPI IAssemblyCacheImpl_InstallAssembly(IAssemblyCache *iface,
     }
 
 done:
-    heap_free(name);
-    heap_free(token);
-    heap_free(version);
-    heap_free(asmpath);
-    heap_free(dst_dir);
-    for (i = 0; i < count; i++) heap_free(external_files[i]);
-    heap_free(external_files);
+    free(name);
+    free(token);
+    free(version);
+    free(asmpath);
+    free(dst_dir);
+    for (i = 0; i < count; i++) free(external_files[i]);
+    free(external_files);
     assembly_release(assembly);
     cache_unlock( cache );
     return hr;
@@ -560,14 +560,14 @@ HRESULT WINAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved
 
     *ppAsmCache = NULL;
 
-    if (!(cache = heap_alloc(sizeof(*cache)))) return E_OUTOFMEMORY;
+    if (!(cache = malloc(sizeof(*cache)))) return E_OUTOFMEMORY;
 
     cache->IAssemblyCache_iface.lpVtbl = &AssemblyCacheVtbl;
     cache->ref = 1;
     cache->lock = CreateMutexW( NULL, FALSE, cache_mutex_nameW );
     if (!cache->lock)
     {
-        heap_free( cache );
+        free( cache );
         return HRESULT_FROM_WIN32( GetLastError() );
     }
     *ppAsmCache = &cache->IAssemblyCache_iface;
@@ -620,7 +620,7 @@ static ULONG WINAPI IAssemblyCacheItemImpl_Release(IAssemblyCacheItem *iface)
     TRACE("(%p)->(ref before = %lu)\n", This, refCount + 1);
 
     if (!refCount)
-        heap_free(This);
+        free(This);
 
     return refCount;
 }
diff --git a/dlls/fusion/asmenum.c b/dlls/fusion/asmenum.c
index d545e2533b5..8a35951accc 100644
--- a/dlls/fusion/asmenum.c
+++ b/dlls/fusion/asmenum.c
@@ -105,10 +105,10 @@ static ULONG WINAPI IAssemblyEnumImpl_Release(IAssemblyEnum *iface)
 
             list_remove(&asmname->entry);
             IAssemblyName_Release(asmname->name);
-            heap_free(asmname);
+            free(asmname);
         }
 
-        heap_free(This);
+        free(This);
     }
 
     return refCount;
@@ -354,7 +354,7 @@ static HRESULT enum_gac_assemblies(struct list *assemblies, IAssemblyName *name,
             }
             swprintf(disp, ARRAY_SIZE(disp), name_fmt, parent, version, token);
 
-            if (!(asmname = heap_alloc(sizeof(*asmname))))
+            if (!(asmname = malloc(sizeof(*asmname))))
             {
                 hr = E_OUTOFMEMORY;
                 break;
@@ -364,7 +364,7 @@ static HRESULT enum_gac_assemblies(struct list *assemblies, IAssemblyName *name,
                                           CANOF_PARSE_DISPLAY_NAME, NULL);
             if (FAILED(hr))
             {
-                heap_free(asmname);
+                free(asmname);
                 break;
             }
 
@@ -372,7 +372,7 @@ static HRESULT enum_gac_assemblies(struct list *assemblies, IAssemblyName *name,
             if (FAILED(hr))
             {
                 IAssemblyName_Release(asmname->name);
-                heap_free(asmname);
+                free(asmname);
                 break;
             }
 
@@ -475,7 +475,7 @@ HRESULT WINAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved,
     if (dwFlags == 0 || dwFlags == ASM_CACHE_ROOT)
         return E_INVALIDARG;
 
-    if (!(asmenum = heap_alloc(sizeof(*asmenum)))) return E_OUTOFMEMORY;
+    if (!(asmenum = malloc(sizeof(*asmenum)))) return E_OUTOFMEMORY;
 
     asmenum->IAssemblyEnum_iface.lpVtbl = &AssemblyEnumVtbl;
     asmenum->ref = 1;
@@ -486,7 +486,7 @@ HRESULT WINAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved,
         hr = enumerate_gac(asmenum, pName);
         if (FAILED(hr))
         {
-            heap_free(asmenum);
+            free(asmenum);
             return hr;
         }
     }
diff --git a/dlls/fusion/asmname.c b/dlls/fusion/asmname.c
index 8a6531df0b8..1d4d588762d 100644
--- a/dlls/fusion/asmname.c
+++ b/dlls/fusion/asmname.c
@@ -114,12 +114,12 @@ static ULONG WINAPI IAssemblyNameImpl_Release(IAssemblyName *iface)
 
     if (!refCount)
     {
-        heap_free(This->path);
-        heap_free(This->displayname);
-        heap_free(This->name);
-        heap_free(This->culture);
-        heap_free(This->procarch);
-        heap_free(This);
+        free(This->path);
+        free(This->displayname);
+        free(This->name);
+        free(This->culture);
+        free(This->procarch);
+        free(This);
     }
 
     return refCount;
@@ -521,7 +521,7 @@ HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path)
 {
     IAssemblyNameImpl *name = unsafe_impl_from_IAssemblyName(iface);
 
-    name->path = strdupW(path);
+    name->path = wcsdup(path);
     if (!name->path)
         return E_OUTOFMEMORY;
 
@@ -576,12 +576,10 @@ static HRESULT parse_version(IAssemblyNameImpl *name, LPWSTR version)
 
 static HRESULT parse_culture(IAssemblyNameImpl *name, LPCWSTR culture)
 {
-    static const WCHAR empty[] = {0};
-
     if (lstrlenW(culture) == 2)
-        name->culture = strdupW(culture);
+        name->culture = wcsdup(culture);
     else
-        name->culture = strdupW(empty);
+        name->culture = wcsdup(L"");
 
     return S_OK;
 }
@@ -662,7 +660,7 @@ static WCHAR *parse_value( const WCHAR *str, unsigned int len )
     BOOL quoted = FALSE;
     unsigned int i = 0;
 
-    if (!(ret = heap_alloc( (len + 1) * sizeof(WCHAR) ))) return NULL;
+    if (!(ret = malloc( (len + 1) * sizeof(WCHAR) ))) return NULL;
     if (*p == '\"')
     {
         quoted = TRUE;
@@ -671,7 +669,7 @@ static WCHAR *parse_value( const WCHAR *str, unsigned int len )
     while (*p && *p != '\"') ret[i++] = *p++;
     if ((quoted && *p != '\"') || (!quoted && *p == '\"'))
     {
-        heap_free( ret );
+        free( ret );
         return NULL;
     }
     ret[i] = 0;
@@ -687,11 +685,11 @@ static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyNam
     if (!szAssemblyName)
         return S_OK;
 
-    name->displayname = strdupW(szAssemblyName);
+    name->displayname = wcsdup(szAssemblyName);
     if (!name->displayname)
         return E_OUTOFMEMORY;
 
-    str = strdupW(szAssemblyName);
+    str = wcsdup(szAssemblyName);
     save = str;
     if (!str)
     {
@@ -709,7 +707,7 @@ static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyNam
         goto done;
     }
 
-    name->name = strdupW(str);
+    name->name = wcsdup(str);
     if (!name->name)
     {
         hr = E_OUTOFMEMORY;
@@ -768,7 +766,7 @@ static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyNam
 
             hr = parse_procarch( name, name->procarch );
         }
-        heap_free( value );
+        free( value );
 
         if (FAILED(hr))
             goto done;
@@ -777,13 +775,13 @@ static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyNam
     }
 
 done:
-    heap_free(save);
+    free(save);
     if (FAILED(hr))
     {
-        heap_free(name->displayname);
-        heap_free(name->name);
-        heap_free(name->culture);
-        heap_free(name->procarch);
+        free(name->displayname);
+        free(name->name);
+        free(name->culture);
+        free(name->procarch);
     }
     return hr;
 }
@@ -808,7 +806,7 @@ HRESULT WINAPI CreateAssemblyNameObject(IAssemblyName **ppAssemblyNameObj,
         (!szAssemblyName || !*szAssemblyName))
         return E_INVALIDARG;
 
-    if (!(name = heap_alloc_zero(sizeof(*name)))) return E_OUTOFMEMORY;
+    if (!(name = calloc(1, sizeof(*name)))) return E_OUTOFMEMORY;
 
     name->IAssemblyName_iface.lpVtbl = &AssemblyNameVtbl;
     name->ref = 1;
@@ -816,7 +814,7 @@ HRESULT WINAPI CreateAssemblyNameObject(IAssemblyName **ppAssemblyNameObj,
     hr = parse_display_name(name, szAssemblyName);
     if (FAILED(hr))
     {
-        heap_free(name);
+        free(name);
         return hr;
     }
 
diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c
index 83f08888f8a..48d5308dd4b 100644
--- a/dlls/fusion/assembly.c
+++ b/dlls/fusion/assembly.c
@@ -540,7 +540,7 @@ static HRESULT parse_metadata_header(ASSEMBLY *assembly, DWORD *hdrsz)
 
     metadatahdr = (METADATAHDR *)ptr;
 
-    if (!(assembly->metadatahdr = heap_alloc(sizeof(*assembly->metadatahdr)))) return E_OUTOFMEMORY;
+    if (!(assembly->metadatahdr = malloc(sizeof(*assembly->metadatahdr)))) return E_OUTOFMEMORY;
 
     size = FIELD_OFFSET(METADATAHDR, Version);
     memcpy(assembly->metadatahdr, metadatahdr, size);
@@ -645,9 +645,9 @@ HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file)
 
     *out = NULL;
 
-    if (!(assembly = heap_alloc_zero(sizeof(*assembly)))) return E_OUTOFMEMORY;
+    if (!(assembly = calloc(1, sizeof(*assembly)))) return E_OUTOFMEMORY;
 
-    assembly->path = strdupW(file);
+    assembly->path = wcsdup(file);
     if (!assembly->path)
     {
         hr = E_OUTOFMEMORY;
@@ -696,12 +696,12 @@ HRESULT assembly_release(ASSEMBLY *assembly)
     if (!assembly)
         return S_OK;
 
-    heap_free(assembly->metadatahdr);
-    heap_free(assembly->path);
+    free(assembly->metadatahdr);
+    free(assembly->path);
     UnmapViewOfFile(assembly->data);
     CloseHandle(assembly->hmap);
     CloseHandle(assembly->hfile);
-    heap_free(assembly);
+    free(assembly);
 
     return S_OK;
 }
@@ -714,7 +714,7 @@ static LPWSTR assembly_dup_str(const ASSEMBLY *assembly, DWORD index)
 
     len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
 
-    if ((cpy = heap_alloc(len * sizeof(WCHAR))))
+    if ((cpy = malloc(len * sizeof(WCHAR))))
         MultiByteToWideChar(CP_ACP, 0, str, -1, cpy, len);
 
     return cpy;
@@ -749,7 +749,7 @@ HRESULT assembly_get_name(ASSEMBLY *assembly, LPWSTR *name)
 
 HRESULT assembly_get_path(const ASSEMBLY *assembly, LPWSTR *path)
 {
-    WCHAR *cpy = heap_alloc((lstrlenW(assembly->path) + 1) * sizeof(WCHAR));
+    WCHAR *cpy = malloc((lstrlenW(assembly->path) + 1) * sizeof(WCHAR));
     *path = cpy;
     if (cpy)
         lstrcpyW(cpy, assembly->path);
@@ -776,7 +776,7 @@ HRESULT assembly_get_version(ASSEMBLY *assembly, LPWSTR *version)
     if (!asmtbl)
         return E_FAIL;
 
-    if (!(*version = heap_alloc(24 * sizeof(WCHAR))))
+    if (!(*version = malloc(24 * sizeof(WCHAR))))
         return E_OUTOFMEMORY;
 
     swprintf(*version, 24, format, asmtbl->MajorVersion, asmtbl->MinorVersion,
@@ -846,7 +846,7 @@ HRESULT assembly_get_pubkey_token(ASSEMBLY *assembly, LPWSTR *token)
     for (i = size - 1; i >= size - 8; i--)
         tokbytes[size - i - 1] = hashdata[i];
 
-    if (!(tok = heap_alloc((TOKEN_LENGTH + 1) * sizeof(WCHAR))))
+    if (!(tok = malloc((TOKEN_LENGTH + 1) * sizeof(WCHAR))))
     {
         hr = E_OUTOFMEMORY;
         goto done;
@@ -890,7 +890,7 @@ HRESULT assembly_get_external_files(ASSEMBLY *assembly, LPWSTR **files, DWORD *c
     if (num_rows <= 0)
         return S_OK;
 
-    if (!(ret = heap_alloc(num_rows * sizeof(WCHAR *)))) return E_OUTOFMEMORY;
+    if (!(ret = malloc(num_rows * sizeof(WCHAR *)))) return E_OUTOFMEMORY;
 
     for (i = 0; i < num_rows; i++)
     {
@@ -903,8 +903,8 @@ HRESULT assembly_get_external_files(ASSEMBLY *assembly, LPWSTR **files, DWORD *c
         ret[i] = assembly_dup_str(assembly, idx);
         if (!ret[i])
         {
-            for (; i >= 0; i--) heap_free(ret[i]);
-            heap_free(ret);
+            for (; i >= 0; i--) free(ret[i]);
+            free(ret);
             return E_OUTOFMEMORY;
         }
         ptr += assembly->stringsz; /* skip Name field */
diff --git a/dlls/fusion/fusionpriv.h b/dlls/fusion/fusionpriv.h
index 22de4ca7846..66ef7b9ff08 100644
--- a/dlls/fusion/fusionpriv.h
+++ b/dlls/fusion/fusionpriv.h
@@ -27,7 +27,6 @@
 #include "winbase.h"
 #include "winuser.h"
 #include "winver.h"
-#include "wine/heap.h"
 
 #include <pshpack1.h>
 
@@ -442,19 +441,6 @@ HRESULT assembly_get_external_files(ASSEMBLY *assembly, LPWSTR **files, DWORD *c
 extern HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path) DECLSPEC_HIDDEN;
 extern HRESULT IAssemblyName_GetPath(IAssemblyName *iface, LPWSTR buf, ULONG *len) DECLSPEC_HIDDEN;
 
-static inline LPWSTR strdupW(LPCWSTR src)
-{
-    LPWSTR dest;
-
-    if (!src)
-        return NULL;
-
-    if ((dest = heap_alloc((lstrlenW(src) + 1) * sizeof(WCHAR))))
-        lstrcpyW(dest, src);
-
-    return dest;
-}
-
 #define BYTES_PER_TOKEN 8
 #define CHARS_PER_BYTE  2
 #define TOKEN_LENGTH    (BYTES_PER_TOKEN * CHARS_PER_BYTE + 1)
-- 
2.35.1




More information about the wine-devel mailing list