From d4fb57a4e23ccc2e374c64ea5d5705f492fdd083 Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Wed, 28 Jun 2017 14:39:28 -0400 Subject: Keep all trailers in CPDF_Parser in m_Trailers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL removes m_pTrailer in favor of having them all in a vector, and having an index that points to the position of the previous m_pTrailer in the vector. Bug: pdfium:787 Change-Id: Ieebbf4849f7ea78f8f74d188e3adb3446a53482e Reviewed-on: https://pdfium-review.googlesource.com/7040 Reviewed-by: dsinclair Commit-Queue: Nicolás Peña --- core/fpdfapi/parser/cpdf_parser.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'core/fpdfapi/parser/cpdf_parser.h') diff --git a/core/fpdfapi/parser/cpdf_parser.h b/core/fpdfapi/parser/cpdf_parser.h index 8f55ddb325..efe10555f7 100644 --- a/core/fpdfapi/parser/cpdf_parser.h +++ b/core/fpdfapi/parser/cpdf_parser.h @@ -7,6 +7,7 @@ #ifndef CORE_FPDFAPI_PARSER_CPDF_PARSER_H_ #define CORE_FPDFAPI_PARSER_CPDF_PARSER_H_ +#include #include #include #include @@ -41,6 +42,8 @@ class CPDF_Parser { // are higher, but this may be large enough in practice. static const uint32_t kMaxObjectNumber = 1048576; + static const size_t kInvalidPos = std::numeric_limits::max(); + CPDF_Parser(); ~CPDF_Parser(); @@ -51,7 +54,10 @@ class CPDF_Parser { void SetPassword(const char* password) { m_Password = password; } CFX_ByteString GetPassword() { return m_Password; } - CPDF_Dictionary* GetTrailer() const { return m_pTrailer.get(); } + CPDF_Dictionary* GetTrailer() const { + return m_TrailerPos == kInvalidPos ? nullptr + : m_Trailers[m_TrailerPos].get(); + } FX_FILESIZE GetLastXRefOffset() const { return m_LastXRefOffset; } uint32_t GetPermissions() const; @@ -161,8 +167,8 @@ class CPDF_Parser { std::unique_ptr m_pSecurityHandler; CFX_ByteString m_Password; std::set m_SortedOffset; - std::unique_ptr m_pTrailer; std::vector> m_Trailers; + size_t m_TrailerPos; std::unique_ptr m_pLinearized; uint32_t m_dwXrefStartObjNum; -- cgit v1.2.3