Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
programs/wusa/main.c | 72 ++++++++++++++++++++--------------------
programs/wusa/manifest.c | 52 ++++++++++++++---------------
programs/wusa/wusa.h | 35 +++----------------
3 files changed, 66 insertions(+), 93 deletions(-)
diff --git a/programs/wusa/main.c b/programs/wusa/main.c
index b3ab6ac523c..74dfeb68d5f 100644
--- a/programs/wusa/main.c
+++ b/programs/wusa/main.c
@@ -54,12 +54,12 @@ struct installer_state
static void * CDECL cabinet_alloc(ULONG cb)
{
- return heap_alloc(cb);
+ return malloc(cb);
}
static void CDECL cabinet_free(void *pv)
{
- heap_free(pv);
+ free(pv);
}
static INT_PTR CDECL cabinet_open(char *pszFile, int oflag, int pmode)
@@ -134,7 +134,7 @@ static WCHAR *path_combine(const WCHAR *path, const WCHAR *filename)
if (!path || !filename) return NULL;
length = lstrlenW(path) + lstrlenW(filename) + 2;
- if (!(result = heap_alloc(length * sizeof(WCHAR)))) return NULL;
+ if (!(result = malloc(length * sizeof(WCHAR)))) return NULL;
lstrcpyW(result, path);
if (result[0] && result[lstrlenW(result) - 1] != '\\') lstrcatW(result, L"\\");
@@ -146,7 +146,7 @@ static WCHAR *get_uncompressed_path(PFDINOTIFICATION pfdin)
{
WCHAR *file = strdupAtoW(pfdin->psz1);
WCHAR *path = path_combine(pfdin->pv, file);
- heap_free(file);
+ free(file);
return path;
}
@@ -187,7 +187,7 @@ static BOOL create_parent_directory(const WCHAR *filename)
ret = create_directory(path);
done:
- heap_free(path);
+ free(path);
return ret;
}
@@ -209,7 +209,7 @@ static INT_PTR cabinet_copy_file(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfd
handle = CreateFileW(file, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, attrs, NULL);
}
- heap_free(file);
+ free(file);
return (handle != INVALID_HANDLE_VALUE) ? (INT_PTR)handle : -1;
}
@@ -257,7 +257,7 @@ static BOOL extract_cabinet(const WCHAR *filename, const WCHAR *destination)
if ((filenameA = strdupWtoA(filename)))
{
ret = FDICopy(hfdi, filenameA, NULL, 0, cabinet_notify, NULL, (void *)destination);
- heap_free(filenameA);
+ free(filenameA);
}
FDIDestroy(hfdi);
@@ -271,18 +271,18 @@ static const WCHAR *create_temp_directory(struct installer_state *state)
WCHAR tmp[MAX_PATH];
if (!GetTempPathW(ARRAY_SIZE(tmp), tmp)) return NULL;
- if (!(entry = heap_alloc(sizeof(*entry)))) return NULL;
- if (!(entry->path = heap_alloc((MAX_PATH + 20) * sizeof(WCHAR))))
+ if (!(entry = malloc(sizeof(*entry)))) return NULL;
+ if (!(entry->path = malloc((MAX_PATH + 20) * sizeof(WCHAR))))
{
- heap_free(entry);
+ free(entry);
return NULL;
}
for (;;)
{
if (!GetTempFileNameW(tmp, L"msu", ++id, entry->path))
{
- heap_free(entry->path);
- heap_free(entry);
+ free(entry->path);
+ free(entry);
return NULL;
}
if (CreateDirectoryW(entry->path, NULL)) break;
@@ -300,7 +300,7 @@ static BOOL delete_directory(const WCHAR *path)
if (!(full_path = path_combine(path, L"*"))) return FALSE;
search = FindFirstFileW(full_path, &data);
- heap_free(full_path);
+ free(full_path);
if (search != INVALID_HANDLE_VALUE)
{
@@ -313,7 +313,7 @@ static BOOL delete_directory(const WCHAR *path)
delete_directory(full_path);
else
DeleteFileW(full_path);
- heap_free(full_path);
+ free(full_path);
}
while (FindNextFileW(search, &data));
FindClose(search);
@@ -332,8 +332,8 @@ static void installer_cleanup(struct installer_state *state)
{
list_remove(&tempdir->entry);
delete_directory(tempdir->path);
- heap_free(tempdir->path);
- heap_free(tempdir);
+ free(tempdir->path);
+ free(tempdir);
}
LIST_FOR_EACH_ENTRY_SAFE(assembly, assembly2, &state->assemblies, struct assembly_entry, entry)
{
@@ -377,11 +377,11 @@ static BOOL load_assemblies_from_cab(const WCHAR *filename, struct installer_sta
FIXME("Cabinet uses proprietary msdelta file compression which is not (yet) supported\n");
FIXME("Installation of msu file will most likely fail\n");
}
- heap_free(path);
+ free(path);
if (!(path = path_combine(temp_path, L"*"))) return FALSE;
search = FindFirstFileW(path, &data);
- heap_free(path);
+ free(path);
if (search != INVALID_HANDLE_VALUE)
{
@@ -393,7 +393,7 @@ static BOOL load_assemblies_from_cab(const WCHAR *filename, struct installer_sta
if (!(path = path_combine(temp_path, data.cFileName))) continue;
if ((assembly = load_manifest(path)))
list_add_tail(&state->assemblies, &assembly->entry);
- heap_free(path);
+ free(path);
}
while (FindNextFileW(search, &data));
FindClose(search);
@@ -439,13 +439,13 @@ static BOOL strbuf_init(struct strbuf *buf)
{
buf->pos = 0;
buf->len = 64;
- buf->buf = heap_alloc(buf->len * sizeof(WCHAR));
+ buf->buf = malloc(buf->len * sizeof(WCHAR));
return buf->buf != NULL;
}
static void strbuf_free(struct strbuf *buf)
{
- heap_free(buf->buf);
+ free(buf->buf);
buf->buf = NULL;
}
@@ -461,7 +461,7 @@ static BOOL strbuf_append(struct strbuf *buf, const WCHAR *str, DWORD len)
if (buf->pos + len + 1 > buf->len)
{
new_len = max(buf->pos + len + 1, buf->len * 2);
- new_buf = heap_realloc(buf->buf, new_len * sizeof(WCHAR));
+ new_buf = realloc(buf->buf, new_len * sizeof(WCHAR));
if (!new_buf)
{
strbuf_free(buf);
@@ -548,10 +548,10 @@ static WCHAR *expand_expression(struct assembly_entry *assembly, const WCHAR *ex
if (!(key = strdupWn(pos, next - pos))) goto error;
value = lookup_expression(assembly, key);
- heap_free(key);
+ free(key);
if (!value) goto error;
strbuf_append(&buf, value, ~0U);
- heap_free(value);
+ free(value);
}
strbuf_append(&buf, pos, ~0U);
@@ -597,9 +597,9 @@ static BOOL install_files_copy(struct assembly_entry *assembly, const WCHAR *sou
}
error:
- heap_free(target_path);
- heap_free(target);
- heap_free(source);
+ free(target_path);
+ free(target);
+ free(source);
return ret;
}
@@ -620,7 +620,7 @@ static BOOL install_files(struct assembly_entry *assembly, BOOL dryrun)
if (!(ret = install_files_copy(assembly, source_path, fileop, dryrun))) break;
}
- heap_free(source_path);
+ free(source_path);
return ret;
}
@@ -667,7 +667,7 @@ static BOOL install_registry_string(struct assembly_entry *assembly, HKEY key, s
ret = FALSE;
}
- heap_free(value);
+ free(value);
return ret;
}
@@ -725,7 +725,7 @@ static BOOL install_registry_multisz(struct assembly_entry *assembly, HKEY key,
ret = FALSE;
}
- heap_free(value);
+ free(value);
return ret;
}
@@ -755,7 +755,7 @@ static BYTE *parse_hex(const WCHAR *input, DWORD *size)
if (length & 1) return NULL;
length >>= 1;
- if (!(output = heap_alloc(length))) return NULL;
+ if (!(output = malloc(length))) return NULL;
for (p = output; *input; input += 2)
{
number[0] = input[0];
@@ -781,7 +781,7 @@ static BOOL install_registry_binary(struct assembly_entry *assembly, HKEY key, s
ret = FALSE;
}
- heap_free(value);
+ free(value);
return ret;
}
@@ -954,7 +954,7 @@ static BOOL install_msu(const WCHAR *filename, struct installer_state *state)
/* load all manifests from contained cabinet archives */
if (!(path = path_combine(temp_path, L"*.cab"))) goto done;
search = FindFirstFileW(path, &data);
- heap_free(path);
+ free(path);
if (search != INVALID_HANDLE_VALUE)
{
@@ -965,7 +965,7 @@ static BOOL install_msu(const WCHAR *filename, struct installer_state *state)
if (!(path = path_combine(temp_path, data.cFileName))) continue;
if (!load_assemblies_from_cab(path, state))
ERR("Failed to load all manifests from %s, ignoring\n", debugstr_w(path));
- heap_free(path);
+ free(path);
}
while (FindNextFileW(search, &data));
FindClose(search);
@@ -974,7 +974,7 @@ static BOOL install_msu(const WCHAR *filename, struct installer_state *state)
/* load all update descriptions */
if (!(path = path_combine(temp_path, L"*.xml"))) goto done;
search = FindFirstFileW(path, &data);
- heap_free(path);
+ free(path);
if (search != INVALID_HANDLE_VALUE)
{
@@ -984,7 +984,7 @@ static BOOL install_msu(const WCHAR *filename, struct installer_state *state)
if (!(path = path_combine(temp_path, data.cFileName))) continue;
if (!load_update(path, &state->updates))
ERR("Failed to load all updates from %s, ignoring\n", debugstr_w(path));
- heap_free(path);
+ free(path);
}
while (FindNextFileW(search, &data));
FindClose(search);
diff --git a/programs/wusa/manifest.c b/programs/wusa/manifest.c
index e80c11998ce..efd2845c7e2 100644
--- a/programs/wusa/manifest.c
+++ b/programs/wusa/manifest.c
@@ -32,28 +32,28 @@ WINE_DEFAULT_DEBUG_CHANNEL(wusa);
static struct dependency_entry *alloc_dependency(void)
{
- struct dependency_entry *entry = heap_alloc_zero(sizeof(*entry));
+ struct dependency_entry *entry = calloc(1, sizeof(*entry));
if (!entry) ERR("Failed to allocate memory for dependency\n");
return entry;
}
static struct fileop_entry *alloc_fileop(void)
{
- struct fileop_entry *entry = heap_alloc_zero(sizeof(*entry));
+ struct fileop_entry *entry = calloc(1, sizeof(*entry));
if (!entry) ERR("Failed to allocate memory for fileop\n");
return entry;
}
static struct registrykv_entry *alloc_registrykv(void)
{
- struct registrykv_entry *entry = heap_alloc_zero(sizeof(*entry));
+ struct registrykv_entry *entry = calloc(1, sizeof(*entry));
if (!entry) ERR("Failed to allocate memory for registrykv\n");
return entry;
}
static struct registryop_entry *alloc_registryop(void)
{
- struct registryop_entry *entry = heap_alloc_zero(sizeof(*entry));
+ struct registryop_entry *entry = calloc(1, sizeof(*entry));
if (!entry) ERR("Failed to allocate memory for registryop\n");
else
{
@@ -64,7 +64,7 @@ static struct registryop_entry *alloc_registryop(void)
static struct assembly_entry *alloc_assembly(void)
{
- struct assembly_entry *entry = heap_alloc_zero(sizeof(*entry));
+ struct assembly_entry *entry = calloc(1, sizeof(*entry));
if (!entry) ERR("Failed to allocate memory for assembly\n");
else
{
@@ -77,39 +77,39 @@ static struct assembly_entry *alloc_assembly(void)
static void clear_identity(struct assembly_identity *entry)
{
- heap_free(entry->name);
- heap_free(entry->version);
- heap_free(entry->architecture);
- heap_free(entry->language);
- heap_free(entry->pubkey_token);
+ free(entry->name);
+ free(entry->version);
+ free(entry->architecture);
+ free(entry->language);
+ free(entry->pubkey_token);
}
void free_dependency(struct dependency_entry *entry)
{
clear_identity(&entry->identity);
- heap_free(entry);
+ free(entry);
}
static void free_fileop(struct fileop_entry *entry)
{
- heap_free(entry->source);
- heap_free(entry->target);
- heap_free(entry);
+ free(entry->source);
+ free(entry->target);
+ free(entry);
}
static void free_registrykv(struct registrykv_entry *entry)
{
- heap_free(entry->name);
- heap_free(entry->value_type);
- heap_free(entry->value);
- heap_free(entry);
+ free(entry->name);
+ free(entry->value_type);
+ free(entry->value);
+ free(entry);
}
static void free_registryop(struct registryop_entry *entry)
{
struct registrykv_entry *keyvalue, *keyvalue2;
- heap_free(entry->key);
+ free(entry->key);
LIST_FOR_EACH_ENTRY_SAFE(keyvalue, keyvalue2, &entry->keyvalues, struct registrykv_entry, entry)
{
@@ -117,7 +117,7 @@ static void free_registryop(struct registryop_entry *entry)
free_registrykv(keyvalue);
}
- heap_free(entry);
+ free(entry);
}
void free_assembly(struct assembly_entry *entry)
@@ -126,8 +126,8 @@ void free_assembly(struct assembly_entry *entry)
struct fileop_entry *fileop, *fileop2;
struct registryop_entry *registryop, *registryop2;
- heap_free(entry->filename);
- heap_free(entry->displayname);
+ free(entry->filename);
+ free(entry->displayname);
clear_identity(&entry->identity);
LIST_FOR_EACH_ENTRY_SAFE(dependency, dependency2, &entry->dependencies, struct dependency_entry, entry)
@@ -146,7 +146,7 @@ void free_assembly(struct assembly_entry *entry)
free_registryop(registryop);
}
- heap_free(entry);
+ free(entry);
}
static WCHAR *get_xml_attribute(IXMLDOMElement *root, const WCHAR *name)
@@ -304,7 +304,7 @@ static BOOL read_dependent_assembly(IXMLDOMElement *root, struct assembly_identi
error:
if (child) IXMLDOMElement_Release(child);
- heap_free(dependency_type);
+ free(dependency_type);
return ret;
}
@@ -498,7 +498,7 @@ static BOOL read_registry_keys(IXMLDOMElement *child, WCHAR *tagname, void *cont
free_registryop(entry);
}
- heap_free(keyname);
+ free(keyname);
return FALSE;
}
@@ -622,7 +622,7 @@ static BOOL read_servicing(IXMLDOMElement *child, WCHAR *tagname, void *context)
else
FIXME("action %s not supported\n", debugstr_w(action));
- heap_free(action);
+ free(action);
return ret;
}
diff --git a/programs/wusa/wusa.h b/programs/wusa/wusa.h
index dcd784e7649..da679a27f07 100644
--- a/programs/wusa/wusa.h
+++ b/programs/wusa/wusa.h
@@ -78,29 +78,6 @@ void free_dependency(struct dependency_entry *entry) DECLSPEC_HIDDEN;
struct assembly_entry *load_manifest(const WCHAR *filename) DECLSPEC_HIDDEN;
BOOL load_update(const WCHAR *filename, struct list *update_list) DECLSPEC_HIDDEN;
-static void *heap_alloc(size_t len) __WINE_ALLOC_SIZE(1);
-static inline void *heap_alloc(size_t len)
-{
- return HeapAlloc(GetProcessHeap(), 0, len);
-}
-
-static void *heap_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1);
-static inline void *heap_alloc_zero(size_t len)
-{
- return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
-}
-
-static void *heap_realloc(void *mem, size_t len) __WINE_ALLOC_SIZE(2);
-static inline void *heap_realloc(void *mem, size_t len)
-{
- return HeapReAlloc(GetProcessHeap(), 0, mem, len);
-}
-
-static inline BOOL heap_free(void *mem)
-{
- return HeapFree(GetProcessHeap(), 0, mem);
-}
-
static inline char *strdupWtoA(const WCHAR *str)
{
char *ret = NULL;
@@ -108,8 +85,7 @@ static inline char *strdupWtoA(const WCHAR *str)
if (!str) return ret;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
- if ((ret = heap_alloc(len)))
- WideCharToMultiByte(CP_ACP, 0, str, -1, ret, len, NULL, NULL);
+ if ((ret = malloc(len))) WideCharToMultiByte(CP_ACP, 0, str, -1, ret, len, NULL, NULL);
return ret;
}
@@ -120,8 +96,7 @@ static inline WCHAR *strdupAtoW(const char *str)
if (!str) return ret;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- if ((ret = heap_alloc(len * sizeof(WCHAR))))
- MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
+ if ((ret = malloc(len * sizeof(WCHAR)))) MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
return ret;
}
@@ -129,8 +104,7 @@ static inline WCHAR *strdupW(const WCHAR *str)
{
WCHAR *ret;
if (!str) return NULL;
- ret = heap_alloc((lstrlenW(str) + 1) * sizeof(WCHAR));
- if (ret) lstrcpyW(ret, str);
+ if ((ret = malloc((lstrlenW(str) + 1) * sizeof(WCHAR)))) lstrcpyW(ret, str);
return ret;
}
@@ -138,8 +112,7 @@ static inline WCHAR *strdupWn(const WCHAR *str, DWORD len)
{
WCHAR *ret;
if (!str) return NULL;
- ret = heap_alloc((len + 1) * sizeof(WCHAR));
- if (ret)
+ if ((ret = malloc((len + 1) * sizeof(WCHAR))))
{
memcpy(ret, str, len * sizeof(WCHAR));
ret[len] = 0;
--
2.30.2