Make looking up named Dests a const operation. Change-Id: Iabfd2db75ccd526e05b24c98dbb272c196534eb0 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/94674 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp index 87d9972..c113872 100644 --- a/core/fpdfdoc/cpdf_nametree.cpp +++ b/core/fpdfdoc/cpdf_nametree.cpp
@@ -353,25 +353,24 @@ return nCount; } -CPDF_Array* GetNamedDestFromObject(CPDF_Object* obj) { +const CPDF_Array* GetNamedDestFromObject(const CPDF_Object* obj) { if (!obj) return nullptr; - CPDF_Array* array = obj->AsArray(); + const CPDF_Array* array = obj->AsArray(); if (array) return array; - CPDF_Dictionary* dict = obj->AsDictionary(); + const CPDF_Dictionary* dict = obj->AsDictionary(); if (dict) - return dict->GetMutableArrayFor("D").Get(); // TODO(tsepez): retain. + return dict->GetArrayFor("D"); return nullptr; } -CPDF_Array* LookupOldStyleNamedDest(CPDF_Document* pDoc, - const ByteString& name) { - RetainPtr<CPDF_Dictionary> pDests = - pDoc->GetMutableRoot()->GetMutableDictFor("Dests"); +const CPDF_Array* LookupOldStyleNamedDest(CPDF_Document* pDoc, + const ByteString& name) { + const CPDF_Dictionary* pDests = pDoc->GetRoot()->GetDictFor("Dests"); if (!pDests) return nullptr; - return GetNamedDestFromObject(pDests->GetMutableDirectObjectFor(name).Get()); + return GetNamedDestFromObject(pDests->GetDirectObjectFor(name)); } } // namespace @@ -437,9 +436,9 @@ } // static -CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc, - const ByteString& name) { - CPDF_Array* dest_array = nullptr; +const CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc, + const ByteString& name) { + const CPDF_Array* dest_array = nullptr; std::unique_ptr<CPDF_NameTree> name_tree = Create(pDoc, "Dests"); if (name_tree) dest_array = name_tree->LookupNewStyleNamedDest(name); @@ -546,7 +545,8 @@ return SearchNameNodeByName(m_pRoot, csName, nullptr, nullptr); } -CPDF_Array* CPDF_NameTree::LookupNewStyleNamedDest(const ByteString& sName) { +const CPDF_Array* CPDF_NameTree::LookupNewStyleNamedDest( + const ByteString& sName) { return GetNamedDestFromObject( LookupValue(PDF_DecodeText(sName.raw_span())).Get()); }
diff --git a/core/fpdfdoc/cpdf_nametree.h b/core/fpdfdoc/cpdf_nametree.h index 144fd9e..9ee41e2 100644 --- a/core/fpdfdoc/cpdf_nametree.h +++ b/core/fpdfdoc/cpdf_nametree.h
@@ -38,8 +38,8 @@ static std::unique_ptr<CPDF_NameTree> CreateForTesting( CPDF_Dictionary* pRoot); - static CPDF_Array* LookupNamedDest(CPDF_Document* doc, - const ByteString& name); + static const CPDF_Array* LookupNamedDest(CPDF_Document* doc, + const ByteString& name); bool AddValueAndName(RetainPtr<CPDF_Object> pObj, const WideString& name); bool DeleteValueAndName(size_t nIndex); @@ -53,7 +53,7 @@ private: explicit CPDF_NameTree(RetainPtr<CPDF_Dictionary> pRoot); - CPDF_Array* LookupNewStyleNamedDest(const ByteString& name); + const CPDF_Array* LookupNewStyleNamedDest(const ByteString& name); RetainPtr<CPDF_Dictionary> const m_pRoot; };
diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp index 83e61eb..d06db72 100644 --- a/fxjs/cjs_document.cpp +++ b/fxjs/cjs_document.cpp
@@ -1381,7 +1381,7 @@ return CJS_Result::Failure(JSMessage::kBadObjectError); CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); - CPDF_Array* dest_array = CPDF_NameTree::LookupNamedDest( + const CPDF_Array* dest_array = CPDF_NameTree::LookupNamedDest( pDocument, pRuntime->ToByteString(params[0])); if (!dest_array) return CJS_Result::Failure(JSMessage::kBadObjectError);