From: Hans Leidekker hans@codeweavers.com
--- dlls/wsdapi/address.c | 4 ++-- dlls/wsdapi/discovery.c | 19 +++++++++---------- dlls/wsdapi/memory.c | 4 ++-- dlls/wsdapi/msgparams.c | 4 ++-- dlls/wsdapi/network.c | 31 +++++++++++++++---------------- dlls/wsdapi/soap.c | 23 +++++++++++------------ 6 files changed, 41 insertions(+), 44 deletions(-)
diff --git a/dlls/wsdapi/address.c b/dlls/wsdapi/address.c index bb8f54ef93c..d7c19d09b39 100644 --- a/dlls/wsdapi/address.c +++ b/dlls/wsdapi/address.c @@ -91,7 +91,7 @@ static ULONG WINAPI IWSDUdpAddressImpl_Release(IWSDUdpAddress *iface)
if (ref == 0) { - HeapFree(GetProcessHeap(), 0, This); + free(This); }
return ref; @@ -354,7 +354,7 @@ HRESULT WINAPI WSDCreateUdpAddress(IWSDUdpAddress **ppAddress)
*ppAddress = NULL;
- obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj)); + obj = calloc(1, sizeof(*obj));
if (!obj) { diff --git a/dlls/wsdapi/discovery.c b/dlls/wsdapi/discovery.c index 9341eec7b78..837db483ce6 100644 --- a/dlls/wsdapi/discovery.c +++ b/dlls/wsdapi/discovery.c @@ -25,7 +25,6 @@
#include "wsdapi_internal.h" #include "wine/debug.h" -#include "wine/heap.h" #include "guiddef.h"
WINE_DEFAULT_DEBUG_CHANNEL(wsdapi); @@ -95,20 +94,20 @@ static ULONG WINAPI IWSDiscoveryPublisherImpl_Release(IWSDiscoveryPublisher *ifa { IWSDiscoveryPublisherNotify_Release(sink->notificationSink); list_remove(&sink->entry); - HeapFree(GetProcessHeap(), 0, sink); + free(sink); }
DeleteCriticalSection(&This->notification_sink_critical_section);
LIST_FOR_EACH_ENTRY_SAFE(msg_id, msg_id_cursor, &This->message_ids, struct message_id, entry) { - heap_free(msg_id->id); + free(msg_id->id); list_remove(&msg_id->entry); - heap_free(msg_id); + free(msg_id); }
DeleteCriticalSection(&This->message_ids_critical_section); - HeapFree(GetProcessHeap(), 0, This); + free(This); }
return ref; @@ -149,7 +148,7 @@ static HRESULT WINAPI IWSDiscoveryPublisherImpl_RegisterNotificationSink(IWSDisc return E_INVALIDARG; }
- sink = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*sink)); + sink = calloc(1, sizeof(*sink));
if (!sink) { @@ -189,7 +188,7 @@ static HRESULT WINAPI IWSDiscoveryPublisherImpl_UnRegisterNotificationSink(IWSDi { IWSDiscoveryPublisherNotify_Release(pSink); list_remove(&sink->entry); - HeapFree(GetProcessHeap(), 0, sink); + free(sink);
LeaveCriticalSection(&impl->notification_sink_critical_section); return S_OK; @@ -421,7 +420,7 @@ HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext *pContext, IWSDiscover
*ppPublisher = NULL;
- obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj)); + obj = calloc(1, sizeof(*obj));
if (!obj) { @@ -439,7 +438,7 @@ HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext *pContext, IWSDiscover if (FAILED(ret)) { WARN("Unable to create XML context\n"); - heap_free(obj); + free(obj); return ret; } } @@ -454,7 +453,7 @@ HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext *pContext, IWSDiscover if (FAILED(ret)) { WARN("Unable to register default namespaces\n"); - heap_free(obj); + free(obj);
return ret; } diff --git a/dlls/wsdapi/memory.c b/dlls/wsdapi/memory.c index 83261623aee..ad4d2eefdf9 100644 --- a/dlls/wsdapi/memory.c +++ b/dlls/wsdapi/memory.c @@ -74,7 +74,7 @@ static void free_allocation(struct memory_allocation *item)
list_remove(&item->entry); item->magic = 0; - HeapFree(GetProcessHeap(), 0, item); + free(item); }
void * WINAPI WSDAllocateLinkedMemory(void *pParent, SIZE_T cbSize) @@ -84,7 +84,7 @@ void * WINAPI WSDAllocateLinkedMemory(void *pParent, SIZE_T cbSize)
TRACE("(%p, %Iu)\n", pParent, cbSize);
- ptr = HeapAlloc(GetProcessHeap(), 0, MEMORY_ALLOCATION_SIZE + cbSize); + ptr = malloc(MEMORY_ALLOCATION_SIZE + cbSize);
if (ptr == NULL) { diff --git a/dlls/wsdapi/msgparams.c b/dlls/wsdapi/msgparams.c index 139fc734a2e..a96c2139eca 100644 --- a/dlls/wsdapi/msgparams.c +++ b/dlls/wsdapi/msgparams.c @@ -81,7 +81,7 @@ static ULONG IWSDMessageParametersImpl_Release(IWSDMessageParameters *iface) IWSDAddress_Release(This->remoteAddress); }
- HeapFree(GetProcessHeap(), 0, This); + free(This); }
return ref; @@ -310,7 +310,7 @@ HRESULT WINAPI WSDCreateUdpMessageParameters(IWSDUdpMessageParameters **ppTxPara
*ppTxParams = NULL;
- obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj)); + obj = calloc(1, sizeof(*obj)); if (!obj) return E_OUTOFMEMORY;
obj->base.IWSDMessageParameters_iface.lpVtbl = (IWSDMessageParametersVtbl *)&udpMsgParamsVtbl; diff --git a/dlls/wsdapi/network.c b/dlls/wsdapi/network.c index 4a9a706b747..a17aa8daa79 100644 --- a/dlls/wsdapi/network.c +++ b/dlls/wsdapi/network.c @@ -24,7 +24,6 @@
#include "wsdapi_internal.h" #include "wine/debug.h" -#include "wine/heap.h" #include "iphlpapi.h" #include "bcrypt.h"
@@ -92,8 +91,8 @@ static DWORD WINAPI sending_thread(LPVOID lpParam) MULTICAST_UDP_REPEAT); closesocket(params->sock);
- heap_free(params->data); - heap_free(params); + free(params->data); + free(params);
return 0; } @@ -120,7 +119,7 @@ static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_d goto cleanup; }
- adapter_addresses = (IP_ADAPTER_ADDRESSES *) heap_alloc(bufferSize); + adapter_addresses = malloc(bufferSize);
if (adapter_addresses == NULL) { @@ -170,9 +169,9 @@ static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_d setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
/* Set up the thread parameters */ - send_params = heap_alloc(sizeof(*send_params)); + send_params = malloc(sizeof(*send_params));
- send_params->data = heap_alloc(length); + send_params->data = malloc(length); memcpy(send_params->data, data, length); send_params->length = length; send_params->sock = s; @@ -203,8 +202,8 @@ static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_d WARN("CreateThread failed (error %ld)\n", GetLastError()); closesocket(s);
- heap_free(send_params->data); - heap_free(send_params); + free(send_params->data); + free(send_params);
continue; } @@ -215,7 +214,7 @@ static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_d ret = TRUE;
cleanup: - heap_free(adapter_addresses); + free(adapter_addresses);
return ret; } @@ -359,7 +358,7 @@ static DWORD WINAPI listening_thread(LPVOID params) SOCKADDR_STORAGE source_addr; char *buffer;
- buffer = heap_alloc(RECEIVE_BUFFER_SIZE); + buffer = malloc(RECEIVE_BUFFER_SIZE); address_len = parameter->ipv6 ? sizeof(SOCKADDR_IN6) : sizeof(SOCKADDR_IN);
while (parameter->impl->publisherStarted) @@ -386,8 +385,8 @@ static DWORD WINAPI listening_thread(LPVOID params) /* The publisher has been stopped */ closesocket(parameter->listening_socket);
- heap_free(buffer); - heap_free(parameter); + free(buffer); + free(parameter);
return 0; } @@ -477,7 +476,7 @@ static int start_listening(IWSDiscoveryPublisherImpl *impl, SOCKADDR_STORAGE *bi }
/* Allocate memory for thread parameters */ - parameter = heap_alloc(sizeof(listener_thread_params)); + parameter = malloc(sizeof(*parameter));
parameter->impl = impl; parameter->listening_socket = s; @@ -498,7 +497,7 @@ static int start_listening(IWSDiscoveryPublisherImpl *impl, SOCKADDR_STORAGE *bi
cleanup: closesocket(s); - heap_free(parameter); + free(parameter);
return 0; } @@ -519,7 +518,7 @@ static BOOL start_listening_on_all_addresses(IWSDiscoveryPublisherImpl *impl, UL }
/* Get size of buffer for adapters */ - adapter_addresses = (IP_ADAPTER_ADDRESSES *)heap_alloc(bufferSize); + adapter_addresses = malloc(bufferSize);
if (adapter_addresses == NULL) { @@ -554,7 +553,7 @@ static BOOL start_listening_on_all_addresses(IWSDiscoveryPublisherImpl *impl, UL }
cleanup: - heap_free(adapter_addresses); + free(adapter_addresses); return (ret == ERROR_SUCCESS) && (valid_listeners > 0); }
diff --git a/dlls/wsdapi/soap.c b/dlls/wsdapi/soap.c index 4251c8cd08d..a2753c943a7 100644 --- a/dlls/wsdapi/soap.c +++ b/dlls/wsdapi/soap.c @@ -25,7 +25,6 @@
#include "wsdapi_internal.h" #include "wine/debug.h" -#include "wine/heap.h" #include "webservices.h"
WINE_DEFAULT_DEBUG_CHANNEL(wsdapi); @@ -106,7 +105,7 @@ static char *wide_to_utf8(LPCWSTR wide_string, int *length) if (*length < 0) return NULL;
- new_string = heap_alloc(*length); + new_string = malloc(*length); WideCharToMultiByte(CP_UTF8, 0, wide_string, -1, new_string, *length, NULL, NULL);
return new_string; @@ -114,7 +113,7 @@ static char *wide_to_utf8(LPCWSTR wide_string, int *length)
static WS_XML_STRING *populate_xml_string(LPCWSTR str) { - WS_XML_STRING *xml = heap_alloc_zero(sizeof(WS_XML_STRING)); + WS_XML_STRING *xml = calloc(1, sizeof(*xml)); int utf8Length;
if (xml == NULL) @@ -124,7 +123,7 @@ static WS_XML_STRING *populate_xml_string(LPCWSTR str)
if (xml->bytes == NULL) { - heap_free(xml); + free(xml); return NULL; }
@@ -140,9 +139,9 @@ static inline void free_xml_string(WS_XML_STRING *value) if (value == NULL) return;
- heap_free(value->bytes); + free(value->bytes);
- heap_free(value); + free(value); }
static HRESULT write_xml_attribute(WSDXML_ATTRIBUTE *attribute, WS_XML_WRITER *writer) @@ -850,7 +849,7 @@ static HRESULT write_and_send_message(IWSDiscoveryPublisherImpl *impl, WSD_SOAP_ if (ret != S_OK) return ret;
/* Prefix the XML header */ - full_xml = heap_alloc(xml_length + xml_header_len + 1); + full_xml = malloc(xml_length + xml_header_len + 1);
if (full_xml == NULL) { @@ -873,7 +872,7 @@ static HRESULT write_and_send_message(IWSDiscoveryPublisherImpl *impl, WSD_SOAP_ ret = send_udp_unicast(full_xml, xml_length + xml_header_len, remote_address, max_initial_delay); }
- heap_free(full_xml); + free(full_xml); WsFreeHeap(heap);
return ret; @@ -1293,7 +1292,7 @@ static HRESULT wide_text_to_ulonglong(LPCWSTR text, ULONGLONG *value) if (utf8_length == 1) return E_FAIL;
ret = str_to_uint64((const unsigned char *) utf8_text, utf8_length - 1, MAX_UINT64, value); - heap_free(utf8_text); + free(utf8_text);
return ret; } @@ -1635,15 +1634,15 @@ static BOOL is_duplicate_message(IWSDiscoveryPublisherImpl *impl, LPCWSTR id) } }
- msg_id = heap_alloc(sizeof(*msg_id)); + msg_id = malloc(sizeof(*msg_id)); if (!msg_id) goto end;
len = (lstrlenW(id) + 1) * sizeof(WCHAR); - msg_id->id = heap_alloc(len); + msg_id->id = malloc(len);
if (!msg_id->id) { - heap_free(msg_id); + free(msg_id); goto end; }
From: Hans Leidekker hans@codeweavers.com
--- dlls/wsdapi/network.c | 89 +++++++++++++------------------------------ 1 file changed, 27 insertions(+), 62 deletions(-)
diff --git a/dlls/wsdapi/network.c b/dlls/wsdapi/network.c index a17aa8daa79..97573c57919 100644 --- a/dlls/wsdapi/network.c +++ b/dlls/wsdapi/network.c @@ -97,44 +97,37 @@ static DWORD WINAPI sending_thread(LPVOID lpParam) return 0; }
+static IP_ADAPTER_ADDRESSES *get_adapters(ULONG family) +{ + ULONG err, size = 4096; + IP_ADAPTER_ADDRESSES *tmp, *ret; + + if (!(ret = malloc( size ))) return NULL; + err = GetAdaptersAddresses( family, 0, NULL, ret, &size ); + while (err == ERROR_BUFFER_OVERFLOW) + { + if (!(tmp = realloc( ret, size ))) break; + ret = tmp; + err = GetAdaptersAddresses( family, 0, NULL, ret, &size ); + } + if (err == ERROR_SUCCESS) return ret; + free( ret ); + return NULL; +} + static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_delay, ULONG family) { - IP_ADAPTER_ADDRESSES *adapter_addresses = NULL, *adapter_addr; + IP_ADAPTER_ADDRESSES *adapter_addresses, *adapter_addr; static const struct in6_addr i_addr_zero; sending_thread_params *send_params; - ULONG bufferSize = 0; LPSOCKADDR sockaddr; - BOOL ret = FALSE; HANDLE thread_handle; const char ttl = 8; - ULONG retval; SOCKET s;
- /* Get size of buffer for adapters */ - retval = GetAdaptersAddresses(family, 0, NULL, NULL, &bufferSize); - - if (retval != ERROR_BUFFER_OVERFLOW) - { - WARN("GetAdaptorsAddresses failed with error %08lx\n", retval); - goto cleanup; - } - - adapter_addresses = malloc(bufferSize); - - if (adapter_addresses == NULL) - { - WARN("Out of memory allocating space for adapter information\n"); - goto cleanup; - } - - /* Get list of adapters */ - retval = GetAdaptersAddresses(family, 0, NULL, adapter_addresses, &bufferSize); - - if (retval != ERROR_SUCCESS) - { - WARN("GetAdaptorsAddresses failed with error %08lx\n", retval); - goto cleanup; - } + adapter_addresses = get_adapters(family); + if (!adapter_addresses) + return FALSE;
for (adapter_addr = adapter_addresses; adapter_addr != NULL; adapter_addr = adapter_addr->Next) { @@ -211,12 +204,8 @@ static BOOL send_udp_multicast_of_type(char *data, int length, int max_initial_d CloseHandle(thread_handle); }
- ret = TRUE; - -cleanup: free(adapter_addresses); - - return ret; + return TRUE; }
BOOL send_udp_multicast(IWSDiscoveryPublisherImpl *impl, char *data, int length, int max_initial_delay) @@ -504,36 +493,12 @@ cleanup:
static BOOL start_listening_on_all_addresses(IWSDiscoveryPublisherImpl *impl, ULONG family) { - IP_ADAPTER_ADDRESSES *adapter_addresses = NULL, *adapter_address; + IP_ADAPTER_ADDRESSES *adapter_addresses, *adapter_address; int valid_listeners = 0; - ULONG bufferSize = 0; - ULONG ret; - - ret = GetAdaptersAddresses(family, 0, NULL, NULL, &bufferSize); /* family should be AF_INET or AF_INET6 */
- if (ret != ERROR_BUFFER_OVERFLOW) - { - WARN("GetAdaptorsAddresses failed with error %08lx\n", ret); + adapter_addresses = get_adapters(family); /* family should be AF_INET or AF_INET6 */ + if (!adapter_addresses) return FALSE; - } - - /* Get size of buffer for adapters */ - adapter_addresses = malloc(bufferSize); - - if (adapter_addresses == NULL) - { - WARN("Out of memory allocating space for adapter information\n"); - return FALSE; - } - - /* Get list of adapters */ - ret = GetAdaptersAddresses(family, 0, NULL, adapter_addresses, &bufferSize); - - if (ret != ERROR_SUCCESS) - { - WARN("GetAdaptorsAddresses failed with error %08lx\n", ret); - goto cleanup; - }
for (adapter_address = adapter_addresses; adapter_address != NULL; adapter_address = adapter_address->Next) { @@ -554,7 +519,7 @@ static BOOL start_listening_on_all_addresses(IWSDiscoveryPublisherImpl *impl, UL
cleanup: free(adapter_addresses); - return (ret == ERROR_SUCCESS) && (valid_listeners > 0); + return valid_listeners > 0; }
HRESULT send_udp_unicast(char *data, int length, IWSDUdpAddress *remote_addr, int max_initial_delay)
From: Hans Leidekker hans@codeweavers.com
--- dlls/wsdapi/tests/discovery.c | 73 +++++++++++++++++------------------ dlls/wsdapi/tests/xml.c | 4 +- 2 files changed, 38 insertions(+), 39 deletions(-)
diff --git a/dlls/wsdapi/tests/discovery.c b/dlls/wsdapi/tests/discovery.c index 01b28a3c1ad..cbf30b0456e 100644 --- a/dlls/wsdapi/tests/discovery.c +++ b/dlls/wsdapi/tests/discovery.c @@ -26,7 +26,6 @@ #include <windows.h>
#include "wine/test.h" -#include "wine/heap.h" #include "initguid.h" #include "objbase.h" #include "wsdapi.h" @@ -86,7 +85,7 @@ static LPWSTR utf8_to_wide(const char *utf8String) if (sizeNeeded <= 0) return NULL;
memLength = sizeof(WCHAR) * (sizeNeeded + 1); - newString = heap_alloc_zero(memLength); + newString = calloc(1, memLength);
MultiByteToWideChar(CP_UTF8, 0, utf8String, utf8StringLength, newString, sizeNeeded); return newString; @@ -175,7 +174,7 @@ static DWORD WINAPI listening_thread(LPVOID lpParam) int bytesReceived; char *buffer;
- buffer = heap_alloc(RECEIVE_BUFFER_SIZE); + buffer = malloc(RECEIVE_BUFFER_SIZE);
while (parameter->msgStorage->running) { @@ -193,7 +192,7 @@ static DWORD WINAPI listening_thread(LPVOID lpParam)
if (msgStorage->messageCount < MAX_CACHED_MESSAGES) { - msgStorage->messages[msgStorage->messageCount] = heap_alloc(bytesReceived); + msgStorage->messages[msgStorage->messageCount] = malloc(bytesReceived);
if (msgStorage->messages[msgStorage->messageCount] != NULL) { @@ -215,8 +214,8 @@ static DWORD WINAPI listening_thread(LPVOID lpParam)
closesocket(parameter->listeningSocket);
- heap_free(buffer); - heap_free(parameter); + free(buffer); + free(parameter);
return 0; } @@ -244,7 +243,7 @@ static BOOL start_listening_udp_unicast(messageStorage *msgStorage, struct socka goto cleanup;
/* Allocate memory for thread parameters */ - parameter = heap_alloc(sizeof(listenerThreadParams)); + parameter = malloc(sizeof(*parameter));
parameter->msgStorage = msgStorage; parameter->listeningSocket = s; @@ -259,7 +258,7 @@ static BOOL start_listening_udp_unicast(messageStorage *msgStorage, struct socka
cleanup: closesocket(s); - heap_free(parameter); + free(parameter);
return FALSE; } @@ -309,7 +308,7 @@ static void start_listening(messageStorage *msgStorage, const char *multicastAdd if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (const char *)&receiveTimeout, sizeof(receiveTimeout)) == SOCKET_ERROR) goto cleanup;
/* Allocate memory for thread parameters */ - parameter = heap_alloc(sizeof(listenerThreadParams)); + parameter = malloc(sizeof(*parameter));
parameter->msgStorage = msgStorage; parameter->listeningSocket = s; @@ -324,7 +323,7 @@ static void start_listening(messageStorage *msgStorage, const char *multicastAdd
cleanup: closesocket(s); - heap_free(parameter); + free(parameter);
cleanup_addresses: freeaddrinfo(multicastAddr); @@ -346,7 +345,7 @@ static BOOL start_listening_on_all_addresses(messageStorage *msgStorage, ULONG f if (retVal != ERROR_BUFFER_OVERFLOW) goto cleanup;
/* Get size of buffer for adapters */ - adapterAddresses = (IP_ADAPTER_ADDRESSES *)heap_alloc(bufferSize); + adapterAddresses = malloc(bufferSize); if (adapterAddresses == NULL) goto cleanup;
/* Get list of adapters */ @@ -373,7 +372,7 @@ static BOOL start_listening_on_all_addresses(messageStorage *msgStorage, ULONG f ret = TRUE;
cleanup: - heap_free(adapterAddresses); + free(adapterAddresses); return ret; }
@@ -402,7 +401,7 @@ static BOOL send_udp_multicast_of_type(const char *data, int length, ULONG famil retval = GetAdaptersAddresses(family, 0, NULL, NULL, &bufferSize); if (retval != ERROR_BUFFER_OVERFLOW) goto cleanup;
- adapter_addresses = (IP_ADAPTER_ADDRESSES *) heap_alloc(bufferSize); + adapter_addresses = malloc(bufferSize); if (adapter_addresses == NULL) goto cleanup;
/* Get list of adapters */ @@ -438,7 +437,7 @@ static BOOL send_udp_multicast_of_type(const char *data, int length, ULONG famil
cleanup: freeaddrinfo(multi_address); - heap_free(adapter_addresses); + free(adapter_addresses); return ret; }
@@ -495,7 +494,7 @@ static ULONG WINAPI IWSDiscoveryPublisherNotifyImpl_Release(IWSDiscoveryPublishe
if (ref == 0) { - HeapFree(GetProcessHeap(), 0, This); + free(This); }
return ref; @@ -644,7 +643,7 @@ static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryP
IWSDUdpAddress_Release(remote_addr);
- msg_storage = heap_alloc_zero(sizeof(messageStorage)); + msg_storage = calloc(1, sizeof(*msg_storage)); if (msg_storage == NULL) goto after_matchprobe_test;
msg_storage->running = TRUE; @@ -736,7 +735,7 @@ static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryP
for (i = 0; i < msg_storage->messageCount; i++) { - heap_free(msg_storage->messages[i]); + free(msg_storage->messages[i]); }
ok(probe_matches_message_seen == TRUE, "Probe matches message not received\n"); @@ -751,9 +750,9 @@ static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryP ok(types_seen == TRUE, "Types not received\n");
after_matchprobe_test: - heap_free(publisherIdW); - heap_free(sequenceIdW); - heap_free(msg_storage); + free(publisherIdW); + free(sequenceIdW); + free(msg_storage); } } } @@ -783,7 +782,7 @@ static BOOL create_discovery_publisher_notify(IWSDiscoveryPublisherNotify **publ
*publisherNotify = NULL;
- obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj)); + obj = calloc(1, sizeof(*obj));
if (!obj) { @@ -956,7 +955,7 @@ static void Publish_tests(void) sequenceIdW = utf8_to_wide(sequenceId); if (sequenceIdW == NULL) goto after_publish_test;
- msgStorage = heap_alloc_zero(sizeof(messageStorage)); + msgStorage = calloc(1, sizeof(*msgStorage)); if (msgStorage == NULL) goto after_publish_test;
msgStorage->running = TRUE; @@ -994,20 +993,20 @@ static void Publish_tests(void) another_name.LocalName = (WCHAR *) name_cider; another_name.Space = &ns2;
- types_list.Next = heap_alloc(sizeof(WSD_NAME_LIST)); + types_list.Next = malloc(sizeof(WSD_NAME_LIST)); types_list.Element = &another_name;
types_list.Next->Next = NULL; types_list.Next->Element = &header_any_name;
/* Create scopes and xaddrs lists */ - scopes_list.Next = heap_alloc(sizeof(WSD_URI_LIST)); + scopes_list.Next = malloc(sizeof(WSD_URI_LIST)); scopes_list.Element = uri;
scopes_list.Next->Next = NULL; scopes_list.Next->Element = uri_more_tests;
- xaddrs_list.Next = heap_alloc(sizeof(WSD_URI_LIST)); + xaddrs_list.Next = malloc(sizeof(WSD_URI_LIST)); xaddrs_list.Element = uri_more_tests;
xaddrs_list.Next->Next = NULL; @@ -1021,9 +1020,9 @@ static void Publish_tests(void) WSDFreeLinkedMemory(body_any_element); WSDFreeLinkedMemory(endpoint_any_element); WSDFreeLinkedMemory(ref_param_any_element); - heap_free(types_list.Next); - heap_free(scopes_list.Next); - heap_free(xaddrs_list.Next); + free(types_list.Next); + free(scopes_list.Next); + free(xaddrs_list.Next);
ok(rc == S_OK, "Publish failed: %08lx\n", rc);
@@ -1076,10 +1075,10 @@ static void Publish_tests(void)
for (i = 0; i < msgStorage->messageCount; i++) { - heap_free(msgStorage->messages[i]); + free(msgStorage->messages[i]); }
- heap_free(msgStorage); + free(msgStorage);
ok(hello_message_seen == TRUE, "Hello message not received\n"); ok(endpoint_reference_seen == TRUE, "EndpointReference not received\n"); @@ -1097,8 +1096,8 @@ static void Publish_tests(void)
after_publish_test:
- heap_free(publisherIdW); - heap_free(sequenceIdW); + free(publisherIdW); + free(sequenceIdW);
/* Test the receiving of a probe message */ probe_event = CreateEventW(NULL, TRUE, FALSE, NULL); @@ -1172,7 +1171,7 @@ static void UnPublish_tests(void) sequenceIdW = utf8_to_wide(sequenceId); if (sequenceIdW == NULL) goto after_unpublish_test;
- msg_storage = heap_alloc_zero(sizeof(messageStorage)); + msg_storage = calloc(1, sizeof(*msg_storage)); if (msg_storage == NULL) goto after_unpublish_test;
msg_storage->running = TRUE; @@ -1241,10 +1240,10 @@ static void UnPublish_tests(void)
for (i = 0; i < msg_storage->messageCount; i++) { - heap_free(msg_storage->messages[i]); + free(msg_storage->messages[i]); }
- heap_free(msg_storage); + free(msg_storage);
ok(hello_message_seen == TRUE, "Bye message not received\n"); ok(endpoint_reference_seen == TRUE, "EndpointReference not received\n"); @@ -1256,8 +1255,8 @@ static void UnPublish_tests(void)
after_unpublish_test:
- heap_free(publisherIdW); - heap_free(sequenceIdW); + free(publisherIdW); + free(sequenceIdW);
ref = IWSDiscoveryPublisher_Release(publisher); ok(ref == 0, "IWSDiscoveryPublisher_Release() has %ld references, should have 0\n", ref); diff --git a/dlls/wsdapi/tests/xml.c b/dlls/wsdapi/tests/xml.c index 0b56024c667..1f5d0df4d34 100644 --- a/dlls/wsdapi/tests/xml.c +++ b/dlls/wsdapi/tests/xml.c @@ -595,7 +595,7 @@ static void XMLContext_AddNameToNamespace_tests(void) START_TEST(xml) { /* Allocate a large text buffer for use in tests */ - largeText = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, largeTextSize + sizeof(WCHAR)); + largeText = calloc(1, largeTextSize + sizeof(WCHAR)); memset(largeText, 'a', largeTextSize);
BuildAnyForSingleElement_tests(); @@ -606,5 +606,5 @@ START_TEST(xml) XMLContext_AddNamespace_tests(); XMLContext_AddNameToNamespace_tests();
- HeapFree(GetProcessHeap(), 0, largeText); + free(largeText); }
From: Hans Leidekker hans@codeweavers.com
--- dlls/wsdapi/tests/discovery.c | 56 ++++++++++++++++------------------- 1 file changed, 25 insertions(+), 31 deletions(-)
diff --git a/dlls/wsdapi/tests/discovery.c b/dlls/wsdapi/tests/discovery.c index cbf30b0456e..065b190ec35 100644 --- a/dlls/wsdapi/tests/discovery.c +++ b/dlls/wsdapi/tests/discovery.c @@ -331,26 +331,34 @@ cleanup_addresses: freeaddrinfo(interfaceAddr); }
+static IP_ADAPTER_ADDRESSES *get_adapters( ULONG family ) +{ + ULONG err, size = 4096; + IP_ADAPTER_ADDRESSES *tmp, *ret; + + if (!(ret = malloc( size ))) return NULL; + err = GetAdaptersAddresses( family, 0, NULL, ret, &size ); + while (err == ERROR_BUFFER_OVERFLOW) + { + if (!(tmp = realloc( ret, size ))) break; + ret = tmp; + err = GetAdaptersAddresses( family, 0, NULL, ret, &size ); + } + if (err == ERROR_SUCCESS) return ret; + free( ret ); + return NULL; +} + static BOOL start_listening_on_all_addresses(messageStorage *msgStorage, ULONG family) { - IP_ADAPTER_ADDRESSES *adapterAddresses = NULL, *adapterAddress; - ULONG bufferSize = 0; + IP_ADAPTER_ADDRESSES *adapterAddresses, *adapterAddress; LPSOCKADDR sockaddr; DWORD addressLength; char address[64]; BOOL ret = FALSE; - ULONG retVal; - - retVal = GetAdaptersAddresses(family, 0, NULL, NULL, &bufferSize); /* family should be AF_INET or AF_INET6 */ - if (retVal != ERROR_BUFFER_OVERFLOW) goto cleanup; - - /* Get size of buffer for adapters */ - adapterAddresses = malloc(bufferSize); - if (adapterAddresses == NULL) goto cleanup;
- /* Get list of adapters */ - retVal = GetAdaptersAddresses(family, 0, NULL, adapterAddresses, &bufferSize); - if (retVal != ERROR_SUCCESS) goto cleanup; + adapterAddresses = get_adapters(family); /* family should be AF_INET or AF_INET6 */ + if (!adapterAddresses) return FALSE;
for (adapterAddress = adapterAddresses; adapterAddress != NULL; adapterAddress = adapterAddress->Next) { @@ -378,14 +386,11 @@ cleanup:
static BOOL send_udp_multicast_of_type(const char *data, int length, ULONG family) { - IP_ADAPTER_ADDRESSES *adapter_addresses = NULL, *adapter_addr; + IP_ADAPTER_ADDRESSES *adapter_addresses, *adapter_addr; static const struct in6_addr i_addr_zero; struct addrinfo *multi_address; - ULONG bufferSize = 0; LPSOCKADDR sockaddr; - BOOL ret = FALSE; const char ttl = 8; - ULONG retval; SOCKET s;
/* Resolve the multicast address */ @@ -397,16 +402,8 @@ static BOOL send_udp_multicast_of_type(const char *data, int length, ULONG famil if (multi_address == NULL) return FALSE;
- /* Get size of buffer for adapters */ - retval = GetAdaptersAddresses(family, 0, NULL, NULL, &bufferSize); - if (retval != ERROR_BUFFER_OVERFLOW) goto cleanup; - - adapter_addresses = malloc(bufferSize); - if (adapter_addresses == NULL) goto cleanup; - - /* Get list of adapters */ - retval = GetAdaptersAddresses(family, 0, NULL, adapter_addresses, &bufferSize); - if (retval != ERROR_SUCCESS) goto cleanup; + adapter_addresses = get_adapters(family); + if (!adapter_addresses) return FALSE;
for (adapter_addr = adapter_addresses; adapter_addr != NULL; adapter_addr = adapter_addr->Next) { @@ -433,12 +430,9 @@ static BOOL send_udp_multicast_of_type(const char *data, int length, ULONG famil closesocket(s); }
- ret = TRUE; - -cleanup: freeaddrinfo(multi_address); free(adapter_addresses); - return ret; + return TRUE; }
typedef struct IWSDiscoveryPublisherNotifyImpl {