Blair Fonville created XERCESC-2145:
---------------------------------------

             Summary: indefinite memory allocations using 
DOMNode::getTextContent()
                 Key: XERCESC-2145
                 URL: https://issues.apache.org/jira/browse/XERCESC-2145
             Project: Xerces-C++
          Issue Type: Bug
          Components: DOM
    Affects Versions: 3.2.1, 3.1.2
         Environment: Windows 10, Visual Studio 2017
            Reporter: Blair Fonville
         Attachments: main.cpp

When using Xerces-C++ in a program, which reads (parses) an xml file once into 
a DOMDocument, and then accesses the DOMDocument's nodes/elements often through 
getTextContent(), the heap memory builds indefinitely.

For example:

#include <xercesc/dom/DOM.hpp>
XERCES_CPP_NAMESPACE_USE

int main(int argc, char **argv)
{
        XMLPlatformUtils::Initialize();

        XMLCh tempStr[100];
        XMLString::transcode("LS", tempStr, 99);
        DOMImplementation *impl = 
DOMImplementationRegistry::getDOMImplementation(tempStr);
        DOMLSParser *parser = 
((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS,
 0);
        DOMDocument *doc = impl->createDocument(0, 0, 0);

        doc = parser->parseURI("config.xml");

        DOMElement *el = doc->getDocumentElement();

        // Heap blows up here
        while (1) {
                char *cstr = XMLString::transcode(el->getTextContent());
                XMLString::release(&cstr);
        }

        // and/or here
        while (1) {
                XMLCh *xstr = XMLString::replicate(el->getTextContent());
                char *cstr = XMLString::transcode(xstr);
                XMLString::release(&cstr);
                XMLString::release(&xstr);
        }
}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to