From 833619b4441915c7c55085d44b3221eaef0d9800 Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 7 Dec 2016 09:21:17 -0800 Subject: Refcount all the IFX_ stream classes all the time. We can remove a lot of "bOwnsStream" logic in the process. Always pass these by const reference, in case the called method wants to hang on to the stream (one exception is where we stick a raw pointer into a void* slot in a context from another layer). Review-Url: https://codereview.chromium.org/2451493002 --- core/fpdfapi/parser/cfdf_document.cpp | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'core/fpdfapi/parser/cfdf_document.cpp') diff --git a/core/fpdfapi/parser/cfdf_document.cpp b/core/fpdfapi/parser/cfdf_document.cpp index a6045e7795..65755520c0 100644 --- a/core/fpdfapi/parser/cfdf_document.cpp +++ b/core/fpdfapi/parser/cfdf_document.cpp @@ -15,15 +15,9 @@ #include "third_party/base/ptr_util.h" CFDF_Document::CFDF_Document() - : CPDF_IndirectObjectHolder(), - m_pRootDict(nullptr), - m_pFile(nullptr), - m_bOwnFile(false) {} - -CFDF_Document::~CFDF_Document() { - if (m_bOwnFile && m_pFile) - m_pFile->Release(); -} + : CPDF_IndirectObjectHolder(), m_pRootDict(nullptr) {} + +CFDF_Document::~CFDF_Document() {} std::unique_ptr CFDF_Document::CreateNewDoc() { auto pDoc = pdfium::MakeUnique(); @@ -33,25 +27,23 @@ std::unique_ptr CFDF_Document::CreateNewDoc() { } std::unique_ptr CFDF_Document::ParseFile( - IFX_SeekableReadStream* pFile, - bool bOwnFile) { + const CFX_RetainPtr& pFile) { if (!pFile) return nullptr; auto pDoc = pdfium::MakeUnique(); - pDoc->ParseStream(pFile, bOwnFile); + pDoc->ParseStream(pFile); return pDoc->m_pRootDict ? std::move(pDoc) : nullptr; } -std::unique_ptr CFDF_Document::ParseMemory(const uint8_t* pData, +std::unique_ptr CFDF_Document::ParseMemory(uint8_t* pData, uint32_t size) { - return CFDF_Document::ParseFile( - IFX_MemoryStream::Create((uint8_t*)pData, size), true); + return CFDF_Document::ParseFile(IFX_MemoryStream::Create(pData, size)); } -void CFDF_Document::ParseStream(IFX_SeekableReadStream* pFile, bool bOwnFile) { +void CFDF_Document::ParseStream( + const CFX_RetainPtr& pFile) { m_pFile = pFile; - m_bOwnFile = bOwnFile; CPDF_SyntaxParser parser; parser.InitParser(m_pFile, 0); while (1) { -- cgit v1.2.3