[PATCH v2] wsdapi: Fix some memory leaks (Valgrind).

Sven Baars sven.wine at gmail.com
Sun Dec 23 12:24:14 CST 2018


Signed-off-by: Sven Baars <sven.wine at gmail.com>
---
v2: Fix a typo and fix some more memory leaks

 dlls/wsdapi/soap.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/dlls/wsdapi/soap.c b/dlls/wsdapi/soap.c
index 2ecc01313f..aa8d15f4c5 100644
--- a/dlls/wsdapi/soap.c
+++ b/dlls/wsdapi/soap.c
@@ -1426,6 +1426,9 @@ static HRESULT ws_element_to_wsdxml_element(WS_XML_READER *reader, IWSDXMLContex
                 if (FAILED(ret)) goto cleanup;
                 WSDXMLAddChild(cur_element, element);
 
+                WSDFreeLinkedMemory(name);
+                name = NULL;
+
                 cur_wsd_attrib = NULL;
 
                 /* Add attributes */
@@ -1462,6 +1465,9 @@ static HRESULT ws_element_to_wsdxml_element(WS_XML_READER *reader, IWSDXMLContex
                     new_wsd_attrib->Element = cur_element;
                     new_wsd_attrib->Next = NULL;
 
+                    WSDAttachLinkedMemory(new_wsd_attrib, name);
+                    name = NULL;
+
                     if (cur_wsd_attrib == NULL)
                         element->FirstAttribute = new_wsd_attrib;
                     else
@@ -1524,6 +1530,7 @@ outofmemory:
 cleanup:
     /* Free uri and element_name if applicable */
     WSDFreeLinkedMemory(uri);
+    WSDFreeLinkedMemory(name);
     return ret;
 }
 
@@ -1712,10 +1719,10 @@ HRESULT read_message(IWSDiscoveryPublisherImpl *impl, const char *xml, int xml_l
     IWSDXMLContext *context = NULL;
     WS_XML_STRING *soap_uri = NULL;
     const WS_XML_NODE *node;
-    WS_XML_READER *reader;
+    WS_XML_READER *reader = NULL;
     LPCWSTR value = NULL;
     LPWSTR uri, prefix;
-    WS_HEAP *heap;
+    WS_HEAP *heap = NULL;
     HRESULT ret;
     int i;
 
@@ -1945,6 +1952,8 @@ cleanup:
     free_xml_string(soap_uri);
     WSDFreeLinkedMemory(soap_msg);
     if (context != NULL) IWSDXMLContext_Release(context);
+    if (reader != NULL) WsFreeReader(reader);
+    if (heap != NULL) WsFreeHeap(heap);
 
     return ret;
 }
-- 
2.17.1




More information about the wine-devel mailing list