From c279a3e1bd3da4e7f7504e438e6df8b7079027f9 Mon Sep 17 00:00:00 2001 From: jaepark Date: Tue, 26 Jul 2016 17:01:22 -0700 Subject: Use smart pointer for CPDF_Form in CPDF_Annot. CPDF_Annot owns CPDF_Form, so use std::unique_ptr for memory management. BUG=pdfium:518 Review-Url: https://codereview.chromium.org/2189463003 --- core/fpdfdoc/cpdf_annot.cpp | 8 +++----- core/fpdfdoc/cpdf_annot.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp index dcdd89c3f4..57e7bc0bbb 100644 --- a/core/fpdfdoc/cpdf_annot.cpp +++ b/core/fpdfdoc/cpdf_annot.cpp @@ -12,6 +12,7 @@ #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" #include "core/fpdfapi/fpdf_render/include/cpdf_rendercontext.h" #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h" +#include "core/fxcrt/include/fx_memory.h" #include "core/fxge/include/fx_ge.h" CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict, CPDF_Document* pDocument) @@ -24,9 +25,6 @@ CPDF_Annot::~CPDF_Annot() { } void CPDF_Annot::ClearCachedAP() { - for (const auto& pair : m_APMap) { - delete pair.second; - } m_APMap.clear(); } CFX_ByteString CPDF_Annot::GetSubType() const { @@ -90,12 +88,12 @@ CPDF_Form* CPDF_Annot::GetAPForm(const CPDF_Page* pPage, AppearanceMode mode) { auto it = m_APMap.find(pStream); if (it != m_APMap.end()) - return it->second; + return it->second.get(); CPDF_Form* pNewForm = new CPDF_Form(m_pDocument, pPage->m_pResources, pStream); pNewForm->ParseContent(nullptr, nullptr, nullptr); - m_APMap[pStream] = pNewForm; + m_APMap[pStream] = WrapUnique(pNewForm); return pNewForm; } diff --git a/core/fpdfdoc/cpdf_annot.h b/core/fpdfdoc/cpdf_annot.h index b5d9186fd3..eab76a6376 100644 --- a/core/fpdfdoc/cpdf_annot.h +++ b/core/fpdfdoc/cpdf_annot.h @@ -64,7 +64,7 @@ class CPDF_Annot { CPDF_Dictionary* const m_pAnnotDict; CPDF_Document* const m_pDocument; const CFX_ByteString m_sSubtype; - std::map m_APMap; + std::map> m_APMap; }; #endif // CORE_FPDFDOC_CPDF_ANNOT_H_ -- cgit v1.2.3