From 7062b2632ffa351903e508003788b67a8c8aba77 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Thu, 13 Apr 2017 13:25:26 -0700 Subject: Use vector of unique ptr in cpdf_data_avail.cpp. Remove member m_pAcroForm as it is only used in one method, and immediately set upon entry. A local will be fine here. Change-Id: I373f68252249a248061828530098ad759907259a Reviewed-on: https://pdfium-review.googlesource.com/4190 Reviewed-by: dsinclair Reviewed-by: Lei Zhang Commit-Queue: Tom Sepez --- core/fpdfapi/parser/cpdf_data_avail.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'core/fpdfapi/parser/cpdf_data_avail.cpp') diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index aa0b4fdad6..0d6154a73b 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -71,7 +71,6 @@ CPDF_DataAvail::CPDF_DataAvail( m_bLinearizedFormParamLoad = false; m_pTrailer = nullptr; m_pCurrentParser = nullptr; - m_pAcroForm = nullptr; m_pPageDict = nullptr; m_pPageResource = nullptr; m_docStatus = PDF_DATAAVAIL_HEADER; @@ -83,8 +82,6 @@ CPDF_DataAvail::CPDF_DataAvail( CPDF_DataAvail::~CPDF_DataAvail() { m_pHintTables.reset(); - for (CPDF_Object* pObject : m_arrayAcroforms) - delete pObject; } void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { @@ -206,8 +203,12 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail( bool CPDF_DataAvail::CheckAcroFormSubObject(DownloadHints* pHints) { if (m_objs_array.empty()) { + std::vector obj_array(m_Acroforms.size()); + std::transform( + m_Acroforms.begin(), m_Acroforms.end(), obj_array.begin(), + [](const std::unique_ptr& pObj) { return pObj.get(); }); + m_ObjectSet.clear(); - std::vector obj_array = m_arrayAcroforms; if (!AreObjectsAvailable(obj_array, false, pHints, m_objs_array)) return false; @@ -221,30 +222,28 @@ bool CPDF_DataAvail::CheckAcroFormSubObject(DownloadHints* pHints) { return false; } - for (CPDF_Object* pObject : m_arrayAcroforms) - delete pObject; - - m_arrayAcroforms.clear(); + m_Acroforms.clear(); return true; } bool CPDF_DataAvail::CheckAcroForm(DownloadHints* pHints) { bool bExist = false; - m_pAcroForm = GetObject(m_dwAcroFormObjNum, pHints, &bExist).release(); + std::unique_ptr pAcroForm = + GetObject(m_dwAcroFormObjNum, pHints, &bExist); if (!bExist) { m_docStatus = PDF_DATAAVAIL_PAGETREE; return true; } - if (!m_pAcroForm) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return true; - } - return false; + if (!pAcroForm) { + if (m_docStatus != PDF_DATAAVAIL_ERROR) + return false; + + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return true; } - m_arrayAcroforms.push_back(m_pAcroForm); + m_Acroforms.push_back(std::move(pAcroForm)); m_docStatus = PDF_DATAAVAIL_PAGETREE; return true; } -- cgit v1.2.3