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