Module: wine Branch: master Commit: ae2017a9844d40051ad98c4361ca4b42d7e66771 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ae2017a9844d40051ad98c4361...
Author: Michael Karcher wine@mkarcher.dialup.fu-berlin.de Date: Sat Oct 11 23:58:35 2008 +0200
msxml3: Fix leaks in callers of xmlChar_from_wchar.
---
dlls/msxml3/cdata.c | 2 ++ dlls/msxml3/comment.c | 2 ++ dlls/msxml3/node.c | 14 +++++++++----- dlls/msxml3/text.c | 2 ++ 4 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c index 8cf3940..368b731 100644 --- a/dlls/msxml3/cdata.c +++ b/dlls/msxml3/cdata.c @@ -606,6 +606,7 @@ static HRESULT WINAPI domcdata_appendData( } else hr = E_FAIL; + HeapFree(GetProcessHeap(), 0, pContent);
return hr; } @@ -667,6 +668,7 @@ static HRESULT WINAPI domcdata_insertData( xmlNodeSetContent(pDOMNode->node, str); hr = S_OK; } + HeapFree(GetProcessHeap(), 0, str);
SysFreeString(sNewString); } diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c index ec6355f..20781a1 100644 --- a/dlls/msxml3/comment.c +++ b/dlls/msxml3/comment.c @@ -616,6 +616,7 @@ static HRESULT WINAPI domcomment_appendData( else hr = E_FAIL; } + HeapFree( GetProcessHeap(), 0, pContent ); } else hr = E_FAIL; @@ -680,6 +681,7 @@ static HRESULT WINAPI domcomment_insertData( xmlNodeSetContent(pDOMNode->node, str); hr = S_OK; } + HeapFree( GetProcessHeap(), 0, str );
SysFreeString(sNewString); } diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index d7eb675..cecabe8 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -372,6 +372,7 @@ static HRESULT WINAPI xmlnode_put_nodeValue( { str = xmlChar_from_wchar((WCHAR*)V_BSTR(&string_value)); xmlNodeSetContent(This->node, str); + HeapFree(GetProcessHeap(),0,str); hr = S_OK; break; } @@ -919,7 +920,7 @@ static HRESULT WINAPI xmlnode_put_text( BSTR text) { xmlnode *This = impl_from_IXMLDOMNode( iface ); - xmlChar *str = NULL; + xmlChar *str, *str2, *str3;
TRACE("%p\n", This);
@@ -934,11 +935,13 @@ static HRESULT WINAPI xmlnode_put_text( str = xmlChar_from_wchar((WCHAR*)text);
/* Escape the string. */ - str = xmlEncodeEntitiesReentrant(This->node->doc, str); - str = xmlEncodeSpecialChars(This->node->doc, str); + str2 = xmlEncodeEntitiesReentrant(This->node->doc, str); + HeapFree(GetProcessHeap(), 0, str); + str3 = xmlEncodeSpecialChars(This->node->doc, str2); + xmlFree(str2);
- xmlNodeSetContent(This->node, str); - xmlFree(str); + xmlNodeSetContent(This->node, str3); + xmlFree(str3);
return S_OK; } @@ -1091,6 +1094,7 @@ static HRESULT WINAPI xmlnode_put_dataType( else ERR("Failed to Create Namepsace\n"); } + HeapFree( GetProcessHeap(), 0, str ); }
return hr; diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c index 7cb1d42..f8e1fc4 100644 --- a/dlls/msxml3/text.c +++ b/dlls/msxml3/text.c @@ -603,6 +603,7 @@ static HRESULT WINAPI domtext_appendData( hr = S_OK; else hr = E_FAIL; + HeapFree( GetProcessHeap(), 0, pContent ); } else hr = E_FAIL; @@ -667,6 +668,7 @@ static HRESULT WINAPI domtext_insertData( xmlNodeSetContent(pDOMNode->node, str); hr = S_OK; } + HeapFree(GetProcessHeap(), 0, str);
SysFreeString(sNewString); }