Add CPDF_Dictionary::GetNumberFor() helper method Introduce this method now that name conflicts are resolved. Change-Id: I05cbfa9e6f258fd4120f0da654e605cea5565ec1 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97771 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_expintfunc.cpp b/core/fpdfapi/page/cpdf_expintfunc.cpp index 9fa9fb3..cde595f 100644 --- a/core/fpdfapi/page/cpdf_expintfunc.cpp +++ b/core/fpdfapi/page/cpdf_expintfunc.cpp
@@ -25,7 +25,7 @@ if (!pDict) return false; - const CPDF_Number* pExponent = ToNumber(pDict->GetObjectFor("N")); + RetainPtr<const CPDF_Number> pExponent = pDict->GetNumberFor("N"); if (!pExponent) return false;
diff --git a/core/fpdfapi/parser/cpdf_dictionary.cpp b/core/fpdfapi/parser/cpdf_dictionary.cpp index 7504cb6..27c4c13 100644 --- a/core/fpdfapi/parser/cpdf_dictionary.cpp +++ b/core/fpdfapi/parser/cpdf_dictionary.cpp
@@ -202,6 +202,11 @@ return pdfium::WrapRetain(const_cast<CPDF_Stream*>(GetStreamFor(key))); } +RetainPtr<const CPDF_Number> CPDF_Dictionary::GetNumberFor( + const ByteString& key) const { + return pdfium::WrapRetain(ToNumber(GetObjectFor(key))); +} + CFX_FloatRect CPDF_Dictionary::GetRectFor(const ByteString& key) const { CFX_FloatRect rect; const CPDF_Array* pArray = GetArrayFor(key);
diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h index c8d2a6e..5837121 100644 --- a/core/fpdfapi/parser/cpdf_dictionary.h +++ b/core/fpdfapi/parser/cpdf_dictionary.h
@@ -74,6 +74,7 @@ RetainPtr<CPDF_Array> GetOrCreateArrayFor(const ByteString& key); const CPDF_Stream* GetStreamFor(const ByteString& key) const; RetainPtr<CPDF_Stream> GetMutableStreamFor(const ByteString& key); + RetainPtr<const CPDF_Number> GetNumberFor(const ByteString& key) const; CFX_FloatRect GetRectFor(const ByteString& key) const; CFX_Matrix GetMatrixFor(const ByteString& key) const;
diff --git a/core/fpdfapi/parser/cpdf_linearized_header.cpp b/core/fpdfapi/parser/cpdf_linearized_header.cpp index 4871739..adedf3b 100644 --- a/core/fpdfapi/parser/cpdf_linearized_header.cpp +++ b/core/fpdfapi/parser/cpdf_linearized_header.cpp
@@ -31,7 +31,7 @@ bool must_exist = true) { if (!pDict->KeyExist(key)) return !must_exist; - const CPDF_Number* pNum = ToNumber(pDict->GetObjectFor(key)); + RetainPtr<const CPDF_Number> pNum = pDict->GetNumberFor(key); if (!pNum || !pNum->IsInteger()) return false; const int raw_value = pNum->GetInteger();
diff --git a/core/fpdfapi/parser/cpdf_object_stream.cpp b/core/fpdfapi/parser/cpdf_object_stream.cpp index 93bd12b..3a55e4f 100644 --- a/core/fpdfapi/parser/cpdf_object_stream.cpp +++ b/core/fpdfapi/parser/cpdf_object_stream.cpp
@@ -31,8 +31,8 @@ if (!ValidateDictType(stream_dict, "ObjStm")) return false; - const CPDF_Number* number_of_objects = - ToNumber(stream_dict->GetObjectFor("N")); + RetainPtr<const CPDF_Number> number_of_objects = + stream_dict->GetNumberFor("N"); if (!number_of_objects || !number_of_objects->IsInteger() || number_of_objects->GetInteger() < 0 || number_of_objects->GetInteger() >= @@ -40,8 +40,8 @@ return false; } - const CPDF_Number* first_object_offset = - ToNumber(stream_dict->GetObjectFor("First")); + RetainPtr<const CPDF_Number> first_object_offset = + stream_dict->GetNumberFor("First"); if (!first_object_offset || !first_object_offset->IsInteger() || first_object_offset->GetInteger() < 0) { return false;