summaryrefslogtreecommitdiff
path: root/xfa/fde
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fde')
-rw-r--r--xfa/fde/xml/fde_xml_imp.cpp37
-rw-r--r--xfa/fde/xml/fde_xml_imp.h11
2 files changed, 13 insertions, 35 deletions
diff --git a/xfa/fde/xml/fde_xml_imp.cpp b/xfa/fde/xml/fde_xml_imp.cpp
index 28384451e4..ade8fc0557 100644
--- a/xfa/fde/xml/fde_xml_imp.cpp
+++ b/xfa/fde/xml/fde_xml_imp.cpp
@@ -11,6 +11,7 @@
#include "core/fxcrt/fx_ext.h"
#include "core/fxcrt/fx_safe_types.h"
+#include "third_party/base/ptr_util.h"
#include "third_party/base/stl_util.h"
#include "xfa/fgas/crt/fgas_codepage.h"
@@ -909,40 +910,20 @@ CFDE_XMLNode* CFDE_XMLCharData::Clone(bool bRecursive) {
CFDE_XMLCharData::~CFDE_XMLCharData() {}
-CFDE_XMLDoc::CFDE_XMLDoc() : m_pRoot(nullptr) {
- Reset(true);
- CFDE_XMLInstruction* pXML = new CFDE_XMLInstruction(L"xml");
- m_pRoot->InsertChildNode(pXML);
+CFDE_XMLDoc::CFDE_XMLDoc()
+ : m_iStatus(0), m_pRoot(pdfium::MakeUnique<CFDE_XMLNode>()) {
+ m_pRoot->InsertChildNode(new CFDE_XMLInstruction(L"xml"));
}
-CFDE_XMLDoc::~CFDE_XMLDoc() {
- Reset(false);
-}
-
-void CFDE_XMLDoc::Reset(bool bInitRoot) {
- m_iStatus = 0;
- m_pStream = nullptr;
- if (bInitRoot) {
- if (m_pRoot)
- m_pRoot->DeleteChildren();
- else
- m_pRoot = new CFDE_XMLNode;
- } else {
- delete m_pRoot;
- m_pRoot = nullptr;
- }
- ReleaseParser();
-}
-
-void CFDE_XMLDoc::ReleaseParser() {
- m_pXMLParser.reset();
-}
+CFDE_XMLDoc::~CFDE_XMLDoc() {}
bool CFDE_XMLDoc::LoadXML(std::unique_ptr<IFDE_XMLParser> pXMLParser) {
if (!pXMLParser)
return false;
- Reset(true);
+ m_iStatus = 0;
+ m_pStream.Reset();
+ m_pRoot->DeleteChildren();
m_pXMLParser = std::move(pXMLParser);
return true;
}
@@ -955,7 +936,7 @@ int32_t CFDE_XMLDoc::DoLoad(IFX_Pause* pPause) {
}
void CFDE_XMLDoc::CloseXML() {
- ReleaseParser();
+ m_pXMLParser.reset();
}
void CFDE_XMLDoc::SaveXMLNode(const CFX_RetainPtr<IFGAS_Stream>& pXMLStream,
diff --git a/xfa/fde/xml/fde_xml_imp.h b/xfa/fde/xml/fde_xml_imp.h
index 687a0cd416..ad2ccc467c 100644
--- a/xfa/fde/xml/fde_xml_imp.h
+++ b/xfa/fde/xml/fde_xml_imp.h
@@ -194,19 +194,16 @@ class CFDE_XMLDoc {
bool LoadXML(std::unique_ptr<IFDE_XMLParser> pXMLParser);
int32_t DoLoad(IFX_Pause* pPause = nullptr);
void CloseXML();
- CFDE_XMLNode* GetRoot() const { return m_pRoot; }
+ CFDE_XMLNode* GetRoot() const { return m_pRoot.get(); }
void SaveXML(CFX_RetainPtr<IFGAS_Stream>& pXMLStream, bool bSaveBOM = true);
void SaveXMLNode(const CFX_RetainPtr<IFGAS_Stream>& pXMLStream,
CFDE_XMLNode* pNode);
- protected:
- void Reset(bool bInitRoot);
- void ReleaseParser();
-
- CFX_RetainPtr<IFGAS_Stream> m_pStream;
+ private:
int32_t m_iStatus;
- CFDE_XMLNode* m_pRoot;
+ std::unique_ptr<CFDE_XMLNode> m_pRoot;
std::unique_ptr<IFDE_XMLParser> m_pXMLParser;
+ CFX_RetainPtr<IFGAS_Stream> m_pStream;
};
class IFDE_XMLParser {