From 3ae3033bff2582029984f91f40f4a8b748a30c96 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 22 Mar 2017 13:01:10 -0700 Subject: Use unique_ptr for CFDE_XMLDoc::m_pRoot Remove some less helpful helper methods. Change-Id: Id027e31b6584156263c4aa0c2888e91fa44e4b0b Reviewed-on: https://pdfium-review.googlesource.com/3150 Reviewed-by: dsinclair Commit-Queue: Tom Sepez --- xfa/fde/xml/fde_xml_imp.cpp | 37 +++++++++---------------------------- xfa/fde/xml/fde_xml_imp.h | 11 ++++------- 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()) { + 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 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& 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 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& pXMLStream, bool bSaveBOM = true); void SaveXMLNode(const CFX_RetainPtr& pXMLStream, CFDE_XMLNode* pNode); - protected: - void Reset(bool bInitRoot); - void ReleaseParser(); - - CFX_RetainPtr m_pStream; + private: int32_t m_iStatus; - CFDE_XMLNode* m_pRoot; + std::unique_ptr m_pRoot; std::unique_ptr m_pXMLParser; + CFX_RetainPtr m_pStream; }; class IFDE_XMLParser { -- cgit v1.2.3