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; |