From b674ebe6dd13288160ad8e324d719a124caf5a83 Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Mon, 24 Oct 2016 13:12:32 -0400 Subject: Fix root dictionary leak in cpdf_document_unittest The CPDF_Document does not own its root dictionary, so add ownership in CPDF_TestDocumentForPages, using ReleaseDeleter because the dictionary cannot be deleted. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/2445753002 . --- core/fpdfapi/parser/cpdf_document_unittest.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/fpdfapi/parser/cpdf_document_unittest.cpp b/core/fpdfapi/parser/cpdf_document_unittest.cpp index 34661b1815..799ecc694e 100644 --- a/core/fpdfapi/parser/cpdf_document_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_document_unittest.cpp @@ -10,6 +10,7 @@ #include "core/fpdfapi/parser/cpdf_array.h" #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_parser.h" +#include "core/fxcrt/fx_memory.h" #include "testing/gtest/include/gtest/gtest.h" namespace { @@ -68,11 +69,16 @@ class CPDF_TestDocumentForPages : public CPDF_Document { allPages->AddReference(this, branch4->GetObjNum()); CPDF_Dictionary* pagesDict = CreatePageTreeNode(allPages, this, 7); - CPDF_Dictionary* root = new CPDF_Dictionary(); - root->SetReferenceFor("Pages", this, AddIndirectObject(pagesDict)); - m_pRootDict = root; + m_pOwnedRootDict.reset(new CPDF_Dictionary()); + m_pOwnedRootDict->SetReferenceFor("Pages", this, + AddIndirectObject(pagesDict)); + m_pRootDict = m_pOwnedRootDict.get(); m_PageList.SetSize(7); } + + private: + std::unique_ptr> + m_pOwnedRootDict; }; TEST(cpdf_document, GetPages) { -- cgit v1.2.3