Hi Enda,
At 12:07 PM 6/1/2006 +0100, Mannion, Enda wrote:
Hi I have a memory leak in this function, can anyone see where? Do I
need to release const XMLCh* n; at the bottom, how do I do this.
[...]
xercesc::DOMNodeList* list;
xercesc::DOMNode* node;
const XMLCh* n;
char* xmlval = "";
string szXmlVal = "";
list = xmlDoc->getElementsByTagName( XMLString::transcode(szTag.c_str())
);
node = list->item(0);
if( xercesc::DOMNode::ELEMENT_NODE == node->getNodeType() )
{
n = node->getFirstChild()->getNodeValue();
xmlval = xercesc::XMLString::transcode(n);
szXmlVal = xmlval;
xercesc::XMLString::release(&xmlval);
xercesc::XMLString::release(n);
}
delete parser;
delete [] xmlval;
delete errHandler;
return szXmlVal;
- you don't need to call xercesc::XMLString::release(n) as the node
value is owned by the DOMNode;
- you don't need to call delete [] xmlval as you already released it
using xercesc::XMLString::release(&xmlval)
- what you need to do is to release the argument of getElementsByTagName
e.g.
XMLCh* tag=XMLString::transcode(szTag.c_str());
list = xmlDoc->getElementsByTagName( tag );
XMLString::release(&tag);
Alberto
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]