Hi, I released both pChar and xXml and then it worked. Thanks for the suggestion.
I was just wondering whether this version of xerces supports </TAG> style of tags. ( Means instead of <TAG></TAG> it should be </TAG> ). If supported which feature to be set for the same. Regards Biju -----Original Message----- From: Jesse Pelton (JIRA) [mailto:[EMAIL PROTECTED] Sent: 07 June 2005 19:54 To: [EMAIL PROTECTED] Subject: [jira] Commented: (XERCESC-1433) Memory leak with WriteToString [ http://issues.apache.org/jira/browse/XERCESC-1433?page=comments#action_1 2312869 ] Jesse Pelton commented on XERCESC-1433: --------------------------------------- DOMWriter::writeToString() allocates the string that it returns to the caller. If there's a bug here, it's in the documentation, which does not mention that it's the caller's responsibility to release the string, or how to do so, unlike the documentation for (e.g.) some versions of XMLString::replicate(). (There's some variation in the documentation for the different versions of this method, which should perhaps be another bug.) As for the problem at hand, calling XMLString::release(&xXml) should do the trick. Is that what "did not work out?" If so, what happened? Please continue this discussion on the mailing list, which is the appropriate place for it. It's not clear yet that there's a bug in the library. > Memory leak with WriteToString > ------------------------------ > > Key: XERCESC-1433 > URL: http://issues.apache.org/jira/browse/XERCESC-1433 > Project: Xerces-C++ > Type: Bug > Components: DOM > Versions: 2.6.0 > Environment: HP-UX 11i and compiler HP ANSI C++ B3910B A.03.52 > Reporter: Biju George > > Using a simple serializeDOM function and in long run shows memory leak > XERCES_CPP_NAMESPACE_USE > int serializeDOM(DOMImplementation *impl, DOMNode* node, char * strError, char * outString) { > DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter(); > try > { > XMLCh *xXml = theSerializer->writeToString(*node); > char *pChar = XMLString::transcode(xXml); > strcpy(outString,pChar); > } > catch (const XMLException& toCatch) { > char* message = XMLString::transcode(toCatch.getMessage()); > strError = message; > XMLString::release(&message); > return FAILURE; > } > catch (const DOMException& toCatch) { > char* message = XMLString::transcode(toCatch.msg); > strError = message; > XMLString::release(&message); > return FAILURE; > } > catch (...) { > strcpy(strError, "Unexpected Exception\n"); > return FAILURE; > } > theSerializer->release(); > return 0; > } > Commenting out the line XMLCh *xXml = theSerializer->writeToString(*node); will show that there is no memory leak. So I think the writeString method has the leak. Let me know whether I am doing something wrong or a fix for the same is available. I am using XERCESC++ version 2.6.0. Deleting xXml also did not work out for me. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
