Index: xfa/fxfa/parser/xfa_object_imp.cpp |
diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp |
index 0fbde1f160533dec3e74d7bcbe1ce29ef15efe9b..f9887825f5a1efbb38257add17d0ff562786e118 100644 |
--- a/xfa/fxfa/parser/xfa_object_imp.cpp |
+++ b/xfa/fxfa/parser/xfa_object_imp.cpp |
@@ -120,10 +120,10 @@ CXFA_Node::~CXFA_Node() { |
delete pNode; |
pNode = pNext; |
} |
- if (m_pXMLNode && HasFlag(XFA_NODEFLAG_OwnXMLNode)) { |
- m_pXMLNode->Release(); |
- } |
+ if (m_pXMLNode && HasFlag(XFA_NODEFLAG_OwnXMLNode)) |
+ delete m_pXMLNode; |
} |
+ |
CXFA_Node* CXFA_Node::Clone(FX_BOOL bRecursive) { |
CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
CXFA_Node* pClone = pFactory->CreateNode(m_ePacket, m_eNodeClass); |
@@ -962,17 +962,12 @@ void CXFA_Node::Script_NodeClass_LoadXML(CFXJSE_Arguments* pArguments) { |
if (iLength >= 3) { |
bOverwrite = pArguments->GetInt32(2) == 0 ? FALSE : TRUE; |
} |
- IXFA_Parser* pParser = IXFA_Parser::Create(m_pDocument); |
- if (!pParser) { |
- return; |
- } |
+ std::unique_ptr<IXFA_Parser> pParser(IXFA_Parser::Create(m_pDocument)); |
CFDE_XMLNode* pXMLNode = NULL; |
int32_t iParserStatus = pParser->ParseXMLData(wsExpression, pXMLNode, NULL); |
- if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) { |
- pParser->Release(); |
- pParser = NULL; |
+ if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) |
return; |
- } |
+ |
if (bIgnoreRoot && |
(pXMLNode->GetType() != FDE_XMLNODE_Element || |
XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { |
@@ -1059,14 +1054,11 @@ void CXFA_Node::Script_NodeClass_LoadXML(CFXJSE_Arguments* pArguments) { |
} |
pFakeRoot->SetFlag(XFA_NODEFLAG_HasRemoved, false); |
} else { |
- if (pFakeXMLRoot) { |
- pFakeXMLRoot->Release(); |
- pFakeXMLRoot = NULL; |
- } |
+ delete pFakeXMLRoot; |
+ pFakeXMLRoot = nullptr; |
} |
- pParser->Release(); |
- pParser = NULL; |
} |
+ |
void CXFA_Node::Script_NodeClass_SaveFilteredXML(CFXJSE_Arguments* pArguments) { |
} |