| Index: xfa/fxfa/parser/xfa_parser_imp.cpp
|
| diff --git a/xfa/fxfa/parser/xfa_parser_imp.cpp b/xfa/fxfa/parser/xfa_parser_imp.cpp
|
| index bb4ba864d5641d67552e2f096a5d4baa6cfe684d..01ea1d6fae731d6165fd0f4c10b2cc6f2c9ff5a3 100644
|
| --- a/xfa/fxfa/parser/xfa_parser_imp.cpp
|
| +++ b/xfa/fxfa/parser/xfa_parser_imp.cpp
|
| @@ -680,9 +680,10 @@
|
| CXFA_Node* pNode =
|
| m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup);
|
| if (!pNode) {
|
| - if (pDataXMLNode != pXMLDocumentNode)
|
| - delete pDataXMLNode;
|
| - return nullptr;
|
| + if (pDataXMLNode != pXMLDocumentNode) {
|
| + pDataXMLNode->Release();
|
| + }
|
| + return NULL;
|
| }
|
| CFX_WideString wsLocalName;
|
| static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName);
|
| @@ -1334,11 +1335,13 @@
|
| }
|
| }
|
| void CXFA_SimpleParser::CloseParser() {
|
| - delete m_pXMLDoc;
|
| - m_pXMLDoc = nullptr;
|
| + if (m_pXMLDoc) {
|
| + m_pXMLDoc->Release();
|
| + m_pXMLDoc = NULL;
|
| + }
|
| if (m_pStream) {
|
| m_pStream->Release();
|
| - m_pStream = nullptr;
|
| + m_pStream = NULL;
|
| }
|
| }
|
|
|
| @@ -1407,16 +1410,17 @@
|
| m_syntaxParserResult(FDE_XmlSyntaxResult::None) {
|
| ASSERT(m_pParent && m_pStream);
|
| m_NodeStack.Push(m_pParent);
|
| - m_pParser.reset(new CFDE_XMLSyntaxParser);
|
| + m_pParser = new CFDE_XMLSyntaxParser;
|
| m_pParser->Init(m_pStream, 32 * 1024, 1024 * 1024);
|
| }
|
| -
|
| CXFA_XMLParser::~CXFA_XMLParser() {
|
| + if (m_pParser) {
|
| + m_pParser->Release();
|
| + }
|
| m_NodeStack.RemoveAll();
|
| m_ws1.clear();
|
| m_ws2.clear();
|
| }
|
| -
|
| int32_t CXFA_XMLParser::DoParser(IFX_Pause* pPause) {
|
| if (m_syntaxParserResult == FDE_XmlSyntaxResult::Error)
|
| return -1;
|
|
|