From 7e28208d26764438bef62e051d2e1fed13e1e0ec Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 9 May 2018 22:02:32 +0000 Subject: Add proper const/non-const versions of CPDF_Object methods. Instead of having const methods that return non-const pointers. BUG=pdfium:234 Change-Id: I598e9b4f267f702e2e71001cfe3aa3c9e9d8c12f Reviewed-on: https://pdfium-review.googlesource.com/32182 Commit-Queue: Lei Zhang Reviewed-by: Henrique Nakashima --- core/fpdfapi/parser/cpdf_reference.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'core/fpdfapi/parser/cpdf_reference.cpp') diff --git a/core/fpdfapi/parser/cpdf_reference.cpp b/core/fpdfapi/parser/cpdf_reference.cpp index 2ca0bddc4f..3f45a96c6b 100644 --- a/core/fpdfapi/parser/cpdf_reference.cpp +++ b/core/fpdfapi/parser/cpdf_reference.cpp @@ -21,25 +21,30 @@ CPDF_Object::Type CPDF_Reference::GetType() const { } ByteString CPDF_Reference::GetString() const { - CPDF_Object* obj = SafeGetDirect(); + const CPDF_Object* obj = SafeGetDirect(); return obj ? obj->GetString() : ByteString(); } float CPDF_Reference::GetNumber() const { - CPDF_Object* obj = SafeGetDirect(); + const CPDF_Object* obj = SafeGetDirect(); return obj ? obj->GetNumber() : 0; } int CPDF_Reference::GetInteger() const { - CPDF_Object* obj = SafeGetDirect(); + const CPDF_Object* obj = SafeGetDirect(); return obj ? obj->GetInteger() : 0; } -CPDF_Dictionary* CPDF_Reference::GetDict() const { +CPDF_Dictionary* CPDF_Reference::GetDict() { CPDF_Object* obj = SafeGetDirect(); return obj ? obj->GetDict() : nullptr; } +const CPDF_Dictionary* CPDF_Reference::GetDict() const { + const CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetDict() : nullptr; +} + bool CPDF_Reference::IsReference() const { return true; } @@ -69,17 +74,27 @@ std::unique_ptr CPDF_Reference::CloneNonCyclic( return pdfium::MakeUnique(m_pObjList.Get(), m_RefObjNum); } -CPDF_Object* CPDF_Reference::SafeGetDirect() const { +CPDF_Object* CPDF_Reference::SafeGetDirect() { CPDF_Object* obj = GetDirect(); return (obj && !obj->IsReference()) ? obj : nullptr; } +const CPDF_Object* CPDF_Reference::SafeGetDirect() const { + const CPDF_Object* obj = GetDirect(); + return (obj && !obj->IsReference()) ? obj : nullptr; +} + void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum) { m_pObjList = pDoc; m_RefObjNum = objnum; } -CPDF_Object* CPDF_Reference::GetDirect() const { +CPDF_Object* CPDF_Reference::GetDirect() { + return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum) + : nullptr; +} + +const CPDF_Object* CPDF_Reference::GetDirect() const { return m_pObjList ? m_pObjList->GetOrParseIndirectObject(m_RefObjNum) : nullptr; } -- cgit v1.2.3