Remove UnownedPtr<>s to CPDF_Object subclasses. Apart from cyclical cases, pointers to CPDF_Object and its subclasses should all be RetainPtr<>. A previous CL avoids the cascade of |const| changes otherwise required, so this is now easy to do. Change-Id: Ia8630eb123b0dbaeeee9afad5a734e52bb82dce1 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/58210 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp index 11c0f2d..8a8edd7 100644 --- a/core/fpdfapi/edit/cpdf_creator.cpp +++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -154,7 +154,7 @@ return false; std::unique_ptr<CPDF_Encryptor> encryptor; - if (GetCryptoHandler() && pObj != m_pEncryptDict) + if (GetCryptoHandler() && pObj != m_pEncryptDict.Get()) encryptor = pdfium::MakeUnique<CPDF_Encryptor>(GetCryptoHandler(), objnum); if (!pObj->WriteTo(m_Archive.get(), encryptor.get())) @@ -232,7 +232,7 @@ m_IsIncremental = false; const CPDF_Dictionary* pDict = m_pDocument->GetRoot(); - m_pMetadata = pDict ? pDict->GetDirectObjectFor("Metadata") : nullptr; + m_pMetadata.Reset(pDict ? pDict->GetDirectObjectFor("Metadata") : nullptr); m_iStage = Stage::kWriteHeader10; } if (m_iStage == Stage::kWriteHeader10) { @@ -619,7 +619,7 @@ ASSERT(m_pParser); if (m_pEncryptDict->GetStringFor("Filter") == "Standard") { m_pNewEncryptDict = ToDictionary(m_pEncryptDict->Clone()); - m_pEncryptDict = m_pNewEncryptDict.Get(); + m_pEncryptDict = m_pNewEncryptDict; m_pSecurityHandler = pdfium::MakeRetain<CPDF_SecurityHandler>(); m_pSecurityHandler->OnCreate(m_pNewEncryptDict.Get(), m_pIDArray.Get(), m_pParser->GetPassword());
diff --git a/core/fpdfapi/edit/cpdf_creator.h b/core/fpdfapi/edit/cpdf_creator.h index 9399dba..d85d8cf 100644 --- a/core/fpdfapi/edit/cpdf_creator.h +++ b/core/fpdfapi/edit/cpdf_creator.h
@@ -74,10 +74,10 @@ UnownedPtr<CPDF_Document> const m_pDocument; UnownedPtr<const CPDF_Parser> const m_pParser; - UnownedPtr<const CPDF_Dictionary> m_pEncryptDict; + RetainPtr<const CPDF_Dictionary> m_pEncryptDict; RetainPtr<CPDF_Dictionary> m_pNewEncryptDict; RetainPtr<CPDF_SecurityHandler> m_pSecurityHandler; - UnownedPtr<const CPDF_Object> m_pMetadata; + RetainPtr<const CPDF_Object> m_pMetadata; uint32_t m_dwLastObjNum; std::unique_ptr<IFX_ArchiveStream> m_Archive; FX_FILESIZE m_SavedOffset = 0;
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp index 3f88149..40cadc5 100644 --- a/core/fpdfapi/page/cpdf_colorspace.cpp +++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -557,7 +557,7 @@ default: return nullptr; } - pCS->m_pArray = pArray; + pCS->m_pArray.Reset(pArray); pCS->m_nComponents = pCS->v_Load(pDoc, pArray, pVisited); if (pCS->m_nComponents == 0) return nullptr; @@ -1138,7 +1138,7 @@ return 0; const CPDF_Object* pBaseObj = pArray->GetDirectObjectAt(1); - if (pBaseObj == m_pArray) + if (pBaseObj == m_pArray.Get()) return 0; auto* pDocPageData = CPDF_DocPageData::FromDocument(pDoc); @@ -1237,7 +1237,7 @@ m_Type = Colorant; const CPDF_Object* pAltCS = pArray->GetDirectObjectAt(2); - if (pAltCS == m_pArray) + if (pAltCS == m_pArray.Get()) return 0; m_pAltCS = Load(pDoc, pAltCS, pVisited); @@ -1317,7 +1317,7 @@ return 0; const CPDF_Object* pAltCS = pArray->GetDirectObjectAt(2); - if (!pAltCS || pAltCS == m_pArray) + if (!pAltCS || pAltCS == m_pArray.Get()) return 0; m_pAltCS = Load(pDoc, pAltCS, pVisited);
diff --git a/core/fpdfapi/page/cpdf_colorspace.h b/core/fpdfapi/page/cpdf_colorspace.h index eb43e54..c8751bd 100644 --- a/core/fpdfapi/page/cpdf_colorspace.h +++ b/core/fpdfapi/page/cpdf_colorspace.h
@@ -128,7 +128,7 @@ void SetComponentsForStockCS(uint32_t nComponents); UnownedPtr<CPDF_Document> const m_pDocument; - UnownedPtr<const CPDF_Array> m_pArray; + RetainPtr<const CPDF_Array> m_pArray; const int m_Family; uint32_t m_dwStdConversion = 0;
diff --git a/core/fpdfapi/page/cpdf_dibbase.cpp b/core/fpdfapi/page/cpdf_dibbase.cpp index 2f998f2..e23fe66 100644 --- a/core/fpdfapi/page/cpdf_dibbase.cpp +++ b/core/fpdfapi/page/cpdf_dibbase.cpp
@@ -102,11 +102,11 @@ return false; m_pDocument = pDoc; - m_pDict = pStream->GetDict(); + m_pDict.Reset(pStream->GetDict()); if (!m_pDict) return false; - m_pStream = pStream; + m_pStream.Reset(pStream); m_Width = m_pDict->GetIntegerFor("Width"); m_Height = m_pDict->GetIntegerFor("Height"); if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension || @@ -215,8 +215,8 @@ return LoadState::kFail; m_pDocument = pDoc; - m_pDict = pStream->GetDict(); - m_pStream = pStream; + m_pDict.Reset(pStream->GetDict()); + m_pStream.Reset(pStream); m_bStdCS = bStdCS; m_bHasMask = bHasMask; m_Width = m_pDict->GetIntegerFor("Width"); @@ -663,9 +663,9 @@ CPDF_DIBBase::LoadState CPDF_DIBBase::StartLoadMask() { m_MatteColor = 0XFFFFFFFF; - m_pMaskStream = m_pDict->GetStreamFor("SMask"); + m_pMaskStream.Reset(m_pDict->GetStreamFor("SMask")); if (!m_pMaskStream) { - m_pMaskStream = ToStream(m_pDict->GetDirectObjectFor("Mask")); + m_pMaskStream.Reset(ToStream(m_pDict->GetDirectObjectFor("Mask"))); return m_pMaskStream ? StartLoadMaskDIB() : LoadState::kSuccess; }
diff --git a/core/fpdfapi/page/cpdf_dibbase.h b/core/fpdfapi/page/cpdf_dibbase.h index 381a64e..c4309a9 100644 --- a/core/fpdfapi/page/cpdf_dibbase.h +++ b/core/fpdfapi/page/cpdf_dibbase.h
@@ -127,8 +127,8 @@ bool TransMask() const; UnownedPtr<CPDF_Document> m_pDocument; - UnownedPtr<const CPDF_Stream> m_pStream; - UnownedPtr<const CPDF_Dictionary> m_pDict; + RetainPtr<const CPDF_Stream> m_pStream; + RetainPtr<const CPDF_Dictionary> m_pDict; RetainPtr<CPDF_StreamAcc> m_pStreamAcc; RetainPtr<CPDF_ColorSpace> m_pColorSpace; uint32_t m_Family = 0; @@ -155,7 +155,7 @@ // Must come after |m_pCachedBitmap|. std::unique_ptr<fxcodec::Jbig2Context> m_pJbig2Context; - UnownedPtr<const CPDF_Stream> m_pMaskStream; + RetainPtr<const CPDF_Stream> m_pMaskStream; LoadState m_Status = LoadState::kFail; };
diff --git a/core/fpdfapi/page/cpdf_generalstate.cpp b/core/fpdfapi/page/cpdf_generalstate.cpp index 9a7d9db..25a8dd6 100644 --- a/core/fpdfapi/page/cpdf_generalstate.cpp +++ b/core/fpdfapi/page/cpdf_generalstate.cpp
@@ -157,7 +157,7 @@ } void CPDF_GeneralState::SetTR(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pTR = pObject; + m_Ref.GetPrivateCopy()->m_pTR.Reset(pObject); } RetainPtr<CPDF_TransferFunc> CPDF_GeneralState::GetTransferFunc() const { @@ -212,15 +212,15 @@ } void CPDF_GeneralState::SetBG(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pBG = pObject; + m_Ref.GetPrivateCopy()->m_pBG.Reset(pObject); } void CPDF_GeneralState::SetUCR(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pUCR = pObject; + m_Ref.GetPrivateCopy()->m_pUCR.Reset(pObject); } void CPDF_GeneralState::SetHT(CPDF_Object* pObject) { - m_Ref.GetPrivateCopy()->m_pHT = pObject; + m_Ref.GetPrivateCopy()->m_pHT.Reset(pObject); } void CPDF_GeneralState::SetFlatness(float flatness) {
diff --git a/core/fpdfapi/page/cpdf_generalstate.h b/core/fpdfapi/page/cpdf_generalstate.h index fb4bb7f..f374380 100644 --- a/core/fpdfapi/page/cpdf_generalstate.h +++ b/core/fpdfapi/page/cpdf_generalstate.h
@@ -10,8 +10,8 @@ #include "constants/transparency.h" #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_string.h" +#include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/shared_copy_on_write.h" -#include "core/fxcrt/unowned_ptr.h" #include "core/fxge/fx_dib.h" class CPDF_Object; @@ -91,7 +91,7 @@ CFX_Matrix m_SMaskMatrix; float m_StrokeAlpha = 1.0f; float m_FillAlpha = 1.0f; - UnownedPtr<const CPDF_Object> m_pTR; + RetainPtr<const CPDF_Object> m_pTR; RetainPtr<CPDF_TransferFunc> m_pTransferFunc; CFX_Matrix m_Matrix; int m_RenderIntent = 0; @@ -101,9 +101,9 @@ bool m_StrokeOP = false; bool m_FillOP = false; int m_OPMode = 0; - UnownedPtr<const CPDF_Object> m_pBG; - UnownedPtr<const CPDF_Object> m_pUCR; - UnownedPtr<const CPDF_Object> m_pHT; + RetainPtr<const CPDF_Object> m_pBG; + RetainPtr<const CPDF_Object> m_pUCR; + RetainPtr<const CPDF_Object> m_pHT; float m_Flatness = 1.0f; float m_Smoothness = 0.0f;
diff --git a/core/fpdfapi/page/cpdf_iccprofile.h b/core/fpdfapi/page/cpdf_iccprofile.h index ffac22f..2ee1b07 100644 --- a/core/fpdfapi/page/cpdf_iccprofile.h +++ b/core/fpdfapi/page/cpdf_iccprofile.h
@@ -10,14 +10,13 @@ #include <memory> #include "core/fxcrt/retain_ptr.h" -#include "core/fxcrt/unowned_ptr.h" #include "third_party/base/span.h" class CPDF_Stream; namespace fxcodec { class CLcmsCmm; -} +} // namespace fxcodec class CPDF_IccProfile final : public Retainable { public: @@ -36,9 +35,9 @@ ~CPDF_IccProfile() override; const bool m_bsRGB; - UnownedPtr<const CPDF_Stream> const m_pStream; - std::unique_ptr<fxcodec::CLcmsCmm> m_Transform; uint32_t m_nSrcComponents = 0; + RetainPtr<const CPDF_Stream> const m_pStream; + std::unique_ptr<fxcodec::CLcmsCmm> m_Transform; }; #endif // CORE_FPDFAPI_PAGE_CPDF_ICCPROFILE_H_
diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp index eb8d76e..00f81b7 100644 --- a/core/fpdfapi/page/cpdf_image.cpp +++ b/core/fpdfapi/page/cpdf_image.cpp
@@ -61,7 +61,7 @@ CPDF_Image::~CPDF_Image() = default; void CPDF_Image::FinishInitialization(CPDF_Dictionary* pStreamDict) { - m_pOC = pStreamDict->GetDictFor("OC"); + m_pOC.Reset(pStreamDict->GetDictFor("OC")); m_bIsMask = !pStreamDict->KeyExist("ColorSpace") || pStreamDict->GetIntegerFor("ImageMask"); m_bInterpolate = !!pStreamDict->GetIntegerFor("Interpolate");
diff --git a/core/fpdfapi/page/cpdf_image.h b/core/fpdfapi/page/cpdf_image.h index 7bcb648..f8d0d00 100644 --- a/core/fpdfapi/page/cpdf_image.h +++ b/core/fpdfapi/page/cpdf_image.h
@@ -86,7 +86,7 @@ bool m_bInterpolate = false; UnownedPtr<CPDF_Document> const m_pDocument; RetainPtr<CPDF_Stream> m_pStream; - UnownedPtr<const CPDF_Dictionary> m_pOC; + RetainPtr<const CPDF_Dictionary> m_pOC; }; #endif // CORE_FPDFAPI_PAGE_CPDF_IMAGE_H_
diff --git a/core/fpdfapi/page/cpdf_meshstream.h b/core/fpdfapi/page/cpdf_meshstream.h index 58805cd..939b192 100644 --- a/core/fpdfapi/page/cpdf_meshstream.h +++ b/core/fpdfapi/page/cpdf_meshstream.h
@@ -68,7 +68,7 @@ const ShadingType m_type; const std::vector<std::unique_ptr<CPDF_Function>>& m_funcs; - UnownedPtr<const CPDF_Stream> const m_pShadingStream; + RetainPtr<const CPDF_Stream> const m_pShadingStream; RetainPtr<CPDF_ColorSpace> const m_pCS; uint32_t m_nCoordBits; uint32_t m_nComponentBits;
diff --git a/core/fpdfapi/page/cpdf_patterncs.cpp b/core/fpdfapi/page/cpdf_patterncs.cpp index 1c5dc6c..1887ae6 100644 --- a/core/fpdfapi/page/cpdf_patterncs.cpp +++ b/core/fpdfapi/page/cpdf_patterncs.cpp
@@ -23,7 +23,7 @@ const CPDF_Array* pArray, std::set<const CPDF_Object*>* pVisited) { const CPDF_Object* pBaseCS = pArray->GetDirectObjectAt(1); - if (pBaseCS == m_pArray) + if (pBaseCS == m_pArray.Get()) return 0; auto* pDocPageData = CPDF_DocPageData::FromDocument(pDoc);
diff --git a/core/fpdfapi/parser/cpdf_array.h b/core/fpdfapi/parser/cpdf_array.h index aa25e82..34b7c9a 100644 --- a/core/fpdfapi/parser/cpdf_array.h +++ b/core/fpdfapi/parser/cpdf_array.h
@@ -16,6 +16,7 @@ #include "core/fpdfapi/parser/cpdf_indirect_object_holder.h" #include "core/fpdfapi/parser/cpdf_object.h" #include "core/fxcrt/fx_coordinates.h" +#include "core/fxcrt/retain_ptr.h" #include "third_party/base/ptr_util.h" class CPDF_Array final : public CPDF_Object { @@ -143,7 +144,7 @@ } private: - UnownedPtr<const CPDF_Array> const m_pArray; + RetainPtr<const CPDF_Array> const m_pArray; }; inline CPDF_Array* ToArray(CPDF_Object* obj) {
diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h index 1087632..ac1b226 100644 --- a/core/fpdfapi/parser/cpdf_dictionary.h +++ b/core/fpdfapi/parser/cpdf_dictionary.h
@@ -16,6 +16,7 @@ #include "core/fpdfapi/parser/cpdf_object.h" #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_string.h" +#include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/string_pool_template.h" #include "core/fxcrt/weak_ptr.h" #include "third_party/base/logging.h" @@ -144,7 +145,7 @@ } private: - UnownedPtr<const CPDF_Dictionary> const m_pDictionary; + RetainPtr<const CPDF_Dictionary> const m_pDictionary; }; inline CPDF_Dictionary* ToDictionary(CPDF_Object* obj) {
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.cpp b/core/fpdfapi/parser/cpdf_flateencoder.cpp index 71428b1..b685822 100644 --- a/core/fpdfapi/parser/cpdf_flateencoder.cpp +++ b/core/fpdfapi/parser/cpdf_flateencoder.cpp
@@ -37,7 +37,7 @@ if (bHasFilter || !bFlateEncode) { m_pData = m_pAcc->GetData(); m_dwSize = m_pAcc->GetSize(); - m_pDict = pStream->GetDict(); + m_pDict.Reset(pStream->GetDict()); ASSERT(!m_pClonedDict); return; } @@ -64,7 +64,7 @@ m_pClonedDict = ToDictionary(m_pDict->Clone()); ASSERT(m_pClonedDict); - m_pDict.Release(); + m_pDict.Reset(); } CPDF_Dictionary* CPDF_FlateEncoder::GetClonedDict() {
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.h b/core/fpdfapi/parser/cpdf_flateencoder.h index fdcad2f..c603ee1 100644 --- a/core/fpdfapi/parser/cpdf_flateencoder.h +++ b/core/fpdfapi/parser/cpdf_flateencoder.h
@@ -40,7 +40,7 @@ MaybeOwned<uint8_t, FxFreeDeleter> m_pData; // Only one of these two pointers is valid at any time. - UnownedPtr<const CPDF_Dictionary> m_pDict; + RetainPtr<const CPDF_Dictionary> m_pDict; RetainPtr<CPDF_Dictionary> m_pClonedDict; };
diff --git a/core/fpdfapi/parser/cpdf_object_walker.cpp b/core/fpdfapi/parser/cpdf_object_walker.cpp index dbc7752..efd4a5c 100644 --- a/core/fpdfapi/parser/cpdf_object_walker.cpp +++ b/core/fpdfapi/parser/cpdf_object_walker.cpp
@@ -149,8 +149,8 @@ if (it->IsFinished()) { stack_.pop(); } else { - next_object_ = it->Increment(); - parent_object_ = it->object(); + next_object_.Reset(it->Increment()); + parent_object_.Reset(it->object()); dict_key_ = parent_object_->IsDictionary() ? static_cast<DictionaryIterator*>(it)->dict_key() : ByteString();
diff --git a/core/fpdfapi/parser/cpdf_object_walker.h b/core/fpdfapi/parser/cpdf_object_walker.h index 0af683c..d019286 100644 --- a/core/fpdfapi/parser/cpdf_object_walker.h +++ b/core/fpdfapi/parser/cpdf_object_walker.h
@@ -9,7 +9,7 @@ #include <stack> #include "core/fxcrt/fx_string.h" -#include "core/fxcrt/unowned_ptr.h" +#include "core/fxcrt/retain_ptr.h" class CPDF_Object; @@ -32,7 +32,7 @@ virtual void Start() = 0; private: - UnownedPtr<const CPDF_Object> object_; + RetainPtr<const CPDF_Object> object_; bool is_started_ = false; }; @@ -50,8 +50,8 @@ static std::unique_ptr<SubobjectIterator> MakeIterator( const CPDF_Object* object); - UnownedPtr<const CPDF_Object> next_object_; - UnownedPtr<const CPDF_Object> parent_object_; + RetainPtr<const CPDF_Object> next_object_; + RetainPtr<const CPDF_Object> parent_object_; ByteString dict_key_; size_t current_depth_ = 0; std::stack<std::unique_ptr<SubobjectIterator>> stack_;
diff --git a/core/fpdfapi/parser/cpdf_security_handler.cpp b/core/fpdfapi/parser/cpdf_security_handler.cpp index 4909c56..2d2795f 100644 --- a/core/fpdfapi/parser/cpdf_security_handler.cpp +++ b/core/fpdfapi/parser/cpdf_security_handler.cpp
@@ -182,7 +182,7 @@ } bool CPDF_SecurityHandler::LoadDict(const CPDF_Dictionary* pEncryptDict) { - m_pEncryptDict = pEncryptDict; + m_pEncryptDict.Reset(pEncryptDict); m_Version = pEncryptDict->GetIntegerFor("V"); m_Revision = pEncryptDict->GetIntegerFor("R"); m_Permissions = pEncryptDict->GetIntegerFor("P", -1); @@ -200,7 +200,7 @@ bool CPDF_SecurityHandler::LoadDict(const CPDF_Dictionary* pEncryptDict, int& cipher, int& key_len) { - m_pEncryptDict = pEncryptDict; + m_pEncryptDict.Reset(pEncryptDict); m_Version = pEncryptDict->GetIntegerFor("V"); m_Revision = pEncryptDict->GetIntegerFor("R"); m_Permissions = pEncryptDict->GetIntegerFor("P", -1);
diff --git a/core/fpdfapi/parser/cpdf_security_handler.h b/core/fpdfapi/parser/cpdf_security_handler.h index cbb8b15..8fd661e 100644 --- a/core/fpdfapi/parser/cpdf_security_handler.h +++ b/core/fpdfapi/parser/cpdf_security_handler.h
@@ -85,7 +85,7 @@ int m_Cipher; int m_KeyLen; bool m_bOwnerUnlocked; - UnownedPtr<const CPDF_Dictionary> m_pEncryptDict; + RetainPtr<const CPDF_Dictionary> m_pEncryptDict; std::unique_ptr<CPDF_CryptoHandler> m_pCryptoHandler; uint8_t m_EncryptKey[32]; };
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h index 9f571c4..2575427 100644 --- a/core/fpdfapi/parser/cpdf_stream_acc.h +++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -58,8 +58,8 @@ MaybeOwned<uint8_t, FxFreeDeleter> m_pData; uint32_t m_dwSize = 0; ByteString m_ImageDecoder; - UnownedPtr<const CPDF_Dictionary> m_pImageParam; - UnownedPtr<const CPDF_Stream> const m_pStream; + RetainPtr<const CPDF_Dictionary> m_pImageParam; + RetainPtr<const CPDF_Stream> const m_pStream; }; #endif // CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_
diff --git a/core/fpdfapi/parser/fpdf_parser_decode.cpp b/core/fpdfapi/parser/fpdf_parser_decode.cpp index ed3d08a..232b6ea 100644 --- a/core/fpdfapi/parser/fpdf_parser_decode.cpp +++ b/core/fpdfapi/parser/fpdf_parser_decode.cpp
@@ -401,7 +401,7 @@ std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size, ByteString* ImageEncoding, - UnownedPtr<const CPDF_Dictionary>* pImageParams) { + RetainPtr<const CPDF_Dictionary>* pImageParams) { std::unique_ptr<uint8_t, FxFreeDeleter> result; // May be changed to point to |result| in the for-loop below. So put it below // |result| and let it get destroyed first. @@ -421,7 +421,7 @@ *ImageEncoding = "FlateDecode"; *dest_buf = std::move(result); *dest_size = last_span.size(); - *pImageParams = pParam; + pImageParams->Reset(pParam); return true; } offset = FlateOrLZWDecode(false, last_span, pParam, estimated_size, @@ -438,7 +438,7 @@ *ImageEncoding = "RunLengthDecode"; *dest_buf = std::move(result); *dest_size = last_span.size(); - *pImageParams = pParam; + pImageParams->Reset(pParam); return true; } offset = RunLengthDecode(last_span, &new_buf, &new_size); @@ -449,7 +449,7 @@ else if (decoder == "CCF") decoder = "CCITTFaxDecode"; *ImageEncoding = std::move(decoder); - *pImageParams = pParam; + pImageParams->Reset(pParam); *dest_buf = std::move(result); *dest_size = last_span.size(); return true;
diff --git a/core/fpdfapi/parser/fpdf_parser_decode.h b/core/fpdfapi/parser/fpdf_parser_decode.h index 6a1a1ce..9782a1f 100644 --- a/core/fpdfapi/parser/fpdf_parser_decode.h +++ b/core/fpdfapi/parser/fpdf_parser_decode.h
@@ -86,6 +86,6 @@ std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf, uint32_t* dest_size, ByteString* ImageEncoding, - UnownedPtr<const CPDF_Dictionary>* pImageParams); + RetainPtr<const CPDF_Dictionary>* pImageParams); #endif // CORE_FPDFAPI_PARSER_FPDF_PARSER_DECODE_H_
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp index f18b552..bbea4e3 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.cpp +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -38,7 +38,6 @@ #include "core/fpdfapi/page/cpdf_textobject.h" #include "core/fpdfapi/page/cpdf_tilingpattern.h" #include "core/fpdfapi/parser/cpdf_array.h" -#include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_document.h" #include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fpdfapi/parser/fpdf_parser_utility.h"
diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h index cb07221..193a7d3 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.h +++ b/core/fpdfapi/render/cpdf_renderstatus.h
@@ -13,7 +13,9 @@ #include "core/fpdfapi/page/cpdf_clippath.h" #include "core/fpdfapi/page/cpdf_graphicstates.h" #include "core/fpdfapi/page/cpdf_transparency.h" +#include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/render/cpdf_renderoptions.h" +#include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/unowned_ptr.h" #include "core/fxge/fx_dib.h" @@ -21,7 +23,6 @@ class CFX_PathData; class CFX_RenderDevice; class CPDF_Color; -class CPDF_Dictionary; class CPDF_Font; class CPDF_FormObject; class CPDF_ImageCacheEntry; @@ -50,7 +51,9 @@ void SetOptions(const CPDF_RenderOptions& options) { m_Options = options; } void SetDeviceMatrix(const CFX_Matrix& matrix) { m_DeviceMatrix = matrix; } void SetStopObject(const CPDF_PageObject* pStopObj) { m_pStopObj = pStopObj; } - void SetFormResource(const CPDF_Dictionary* pRes) { m_pFormResource = pRes; } + void SetFormResource(const CPDF_Dictionary* pRes) { + m_pFormResource.Reset(pRes); + } void SetType3Char(CPDF_Type3Char* pType3Char) { m_pType3Char = pType3Char; } void SetFillColor(FX_ARGB color) { m_T3FillColor = color; } void SetDropObjects(bool bDropObjects) { m_bDropObjects = bDropObjects; } @@ -185,7 +188,7 @@ const CFX_Matrix& mtObj2Device) const; CPDF_RenderOptions m_Options; - UnownedPtr<const CPDF_Dictionary> m_pFormResource; + RetainPtr<const CPDF_Dictionary> m_pFormResource; RetainPtr<CPDF_Dictionary> m_pPageResource; std::vector<CPDF_Type3Font*> m_Type3FontCache; UnownedPtr<CPDF_RenderContext> const m_pContext;
diff --git a/core/fpdfdoc/cpdf_filespec.h b/core/fpdfdoc/cpdf_filespec.h index 3b00cdf..820b948 100644 --- a/core/fpdfdoc/cpdf_filespec.h +++ b/core/fpdfdoc/cpdf_filespec.h
@@ -8,8 +8,8 @@ #define CORE_FPDFDOC_CPDF_FILESPEC_H_ #include "core/fxcrt/fx_string.h" +#include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/string_pool_template.h" -#include "core/fxcrt/unowned_ptr.h" #include "core/fxcrt/weak_ptr.h" class CPDF_Dictionary; @@ -40,7 +40,7 @@ void SetFileName(const WideString& wsFileName); private: - UnownedPtr<const CPDF_Object> const m_pObj; + RetainPtr<const CPDF_Object> const m_pObj; RetainPtr<CPDF_Object> const m_pWritableObj; };
diff --git a/core/fpdfdoc/cpdf_iconfit.h b/core/fpdfdoc/cpdf_iconfit.h index 7c27d6f..3da3dde 100644 --- a/core/fpdfdoc/cpdf_iconfit.h +++ b/core/fpdfdoc/cpdf_iconfit.h
@@ -9,7 +9,7 @@ #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_system.h" -#include "core/fxcrt/unowned_ptr.h" +#include "core/fxcrt/retain_ptr.h" class CPDF_Dictionary; @@ -28,7 +28,7 @@ const CPDF_Dictionary* GetDict() const { return m_pDict.Get(); } private: - UnownedPtr<const CPDF_Dictionary> const m_pDict; + RetainPtr<const CPDF_Dictionary> const m_pDict; }; #endif // CORE_FPDFDOC_CPDF_ICONFIT_H_
diff --git a/core/fpdfdoc/cpdf_metadata.h b/core/fpdfdoc/cpdf_metadata.h index 683f4f1..554492a 100644 --- a/core/fpdfdoc/cpdf_metadata.h +++ b/core/fpdfdoc/cpdf_metadata.h
@@ -9,7 +9,7 @@ #include <vector> -#include "core/fxcrt/unowned_ptr.h" +#include "core/fxcrt/retain_ptr.h" class CPDF_Stream; @@ -40,7 +40,7 @@ std::vector<UnsupportedFeature> CheckForSharedForm() const; private: - UnownedPtr<const CPDF_Stream> stream_; + RetainPtr<const CPDF_Stream> stream_; }; #endif // CORE_FPDFDOC_CPDF_METADATA_H_
diff --git a/core/fpdfdoc/cpdf_numbertree.h b/core/fpdfdoc/cpdf_numbertree.h index 1c65fd2..2a3fa6e 100644 --- a/core/fpdfdoc/cpdf_numbertree.h +++ b/core/fpdfdoc/cpdf_numbertree.h
@@ -7,7 +7,7 @@ #ifndef CORE_FPDFDOC_CPDF_NUMBERTREE_H_ #define CORE_FPDFDOC_CPDF_NUMBERTREE_H_ -#include "core/fxcrt/unowned_ptr.h" +#include "core/fxcrt/retain_ptr.h" class CPDF_Dictionary; class CPDF_Object; @@ -20,7 +20,7 @@ const CPDF_Object* LookupValue(int num) const; protected: - UnownedPtr<const CPDF_Dictionary> const m_pRoot; + RetainPtr<const CPDF_Dictionary> const m_pRoot; }; #endif // CORE_FPDFDOC_CPDF_NUMBERTREE_H_
diff --git a/core/fpdfdoc/cpdf_structelement.cpp b/core/fpdfdoc/cpdf_structelement.cpp index 89a5e39..db36232 100644 --- a/core/fpdfdoc/cpdf_structelement.cpp +++ b/core/fpdfdoc/cpdf_structelement.cpp
@@ -143,7 +143,7 @@ } pKid->m_Type = CPDF_StructKid::Element; - pKid->m_pDict = pKidDict; + pKid->m_pDict.Reset(pKidDict); if (m_pTree->GetPage()) { pKid->m_pElement = nullptr; return;
diff --git a/core/fpdfdoc/cpdf_structelement.h b/core/fpdfdoc/cpdf_structelement.h index 49044e9..ae40a40 100644 --- a/core/fpdfdoc/cpdf_structelement.h +++ b/core/fpdfdoc/cpdf_structelement.h
@@ -26,8 +26,8 @@ enum { Invalid, Element, PageContent, StreamContent, Object } m_Type; - RetainPtr<CPDF_StructElement> m_pElement; // For Element. - UnownedPtr<const CPDF_Dictionary> m_pDict; // For Element. + RetainPtr<CPDF_StructElement> m_pElement; // For Element. + RetainPtr<const CPDF_Dictionary> m_pDict; // For Element. uint32_t m_PageObjNum; // For PageContent, StreamContent, Object. uint32_t m_RefObjNum; // For StreamContent, Object. uint32_t m_ContentId; // For PageContent, StreamContent. @@ -62,7 +62,7 @@ UnownedPtr<CPDF_StructTree> const m_pTree; UnownedPtr<CPDF_StructElement> const m_pParent; - UnownedPtr<const CPDF_Dictionary> const m_pDict; + RetainPtr<const CPDF_Dictionary> const m_pDict; const ByteString m_Type; std::vector<CPDF_StructKid> m_Kids; };
diff --git a/core/fpdfdoc/cpdf_structtree.cpp b/core/fpdfdoc/cpdf_structtree.cpp index 1b72a53..25eb9cd 100644 --- a/core/fpdfdoc/cpdf_structtree.cpp +++ b/core/fpdfdoc/cpdf_structtree.cpp
@@ -44,7 +44,7 @@ CPDF_StructTree::~CPDF_StructTree() = default; void CPDF_StructTree::LoadPageTree(const CPDF_Dictionary* pPageDict) { - m_pPage = pPageDict; + m_pPage.Reset(pPageDict); if (!m_pTreeRoot) return;
diff --git a/core/fpdfdoc/cpdf_structtree.h b/core/fpdfdoc/cpdf_structtree.h index 8d8172b..b0eafba 100644 --- a/core/fpdfdoc/cpdf_structtree.h +++ b/core/fpdfdoc/cpdf_structtree.h
@@ -12,7 +12,6 @@ #include <vector> #include "core/fxcrt/retain_ptr.h" -#include "core/fxcrt/unowned_ptr.h" class CPDF_Dictionary; class CPDF_Document; @@ -44,9 +43,9 @@ bool AddTopLevelNode(const CPDF_Dictionary* pDict, const RetainPtr<CPDF_StructElement>& pElement); - UnownedPtr<const CPDF_Dictionary> const m_pTreeRoot; - UnownedPtr<const CPDF_Dictionary> const m_pRoleMap; - UnownedPtr<const CPDF_Dictionary> m_pPage; + RetainPtr<const CPDF_Dictionary> const m_pTreeRoot; + RetainPtr<const CPDF_Dictionary> const m_pRoleMap; + RetainPtr<const CPDF_Dictionary> m_pPage; std::vector<RetainPtr<CPDF_StructElement>> m_Kids; };