You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by bu...@apache.org on 2002/06/07 14:31:54 UTC
DO NOT REPLY [Bug 9691] New: -
Memory leak when setCreateEntityReferenceNodes is true
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9691>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9691
Memory leak when setCreateEntityReferenceNodes is true
Summary: Memory leak when setCreateEntityReferenceNodes is true
Product: Xerces-C++
Version: 1.7.0
Platform: Sun
OS/Version: Solaris
Status: NEW
Severity: Normal
Priority: Other
Component: DOM
AssignedTo: xerces-c-dev@xml.apache.org
ReportedBy: anthony.wuebben@lexisnexis.com
I'm running on Solaris 5.7 with xerces 1.7 and I am seeing the following
problem:
My long running applications are leaking what appears to be the entire DOM
tree when setCreateEntityReferenceNodes() is set to true and the XML file
being parsed contains a entity reference. If I turn off the creatation of
entity references or pass in a file that does not contain entity-reference
everything is fine.
Below is a sample of the code that fails. Just give it the below document
that contains an entity-reference and it leaks.
CODE
while(1) {
try {
fprintf(stderr,"Calling XMLPlatformUtils::Initialize()\n");
XMLPlatformUtils::Initialize();
}
catch(const XMLException& toCatch) {
char *cp = XMLString::transcode(toCatch.getMessage());
fprintf(stderr,"Error during Xerces-c Initialization: [%s]\n",cp);
delete [] cp;
return 1;
}
DOMParser * _parser = new DOMParser;
_parser->setDoValidation(false);
_parser->setValidationScheme(DOMParser::Val_Never);
_parser->setCreateEntityReferenceNodes(true);
_parser->setToCreateXMLDeclTypeNode(true);
_parser->setIncludeIgnorableWhitespace(true);
_parser->setDoNamespaces(false);
_parser->parse(filename);
delete _parser;
try {
fprintf(stderr,"Calling XMLPlatformUtils::Terminate()\n");
XMLPlatformUtils::Terminate();
}
catch(const XMLException& toCatch) {
char *cp = XMLString::transcode(toCatch.getMessage());
fprintf(stderr,"Error during Xerces-c Termination: [%s]\n",cp);
delete [] cp;
}
} // end forever
exit(0);
}
FILE
<!DOCTYPE foo [
<!ELEMENT foo (foo1|foo2) >
<!ELEMENT foo1 (#PCDATA)* >
<!ELEMENT foo2 (#PCDATA)* >
<!ENTITY entityfoo "entity-value">
]>
<foo><foo1>This a some test data &entityfoo; and more test data
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn</foo1></foo>
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org