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;
};