Index: core/include/fpdfapi/fpdf_parser.h |
diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h |
index fda45571196bde7c3985da141bec2862a0a550a5..bdddfc37d7bf1325a0b0e621434496a6900e9cfc 100644 |
--- a/core/include/fpdfapi/fpdf_parser.h |
+++ b/core/include/fpdfapi/fpdf_parser.h |
@@ -61,6 +61,20 @@ inline bool PDFCharIsLineEnding(uint8_t c) { |
return c == '\r' || c == '\n'; |
} |
+template <typename T> |
+class ScopedSetInsertion { |
+ public: |
+ ScopedSetInsertion(std::set<T>* org_set, T elem) |
+ : m_Set(org_set), m_Entry(elem) { |
+ m_Set->insert(m_Entry); |
+ } |
+ ~ScopedSetInsertion() { m_Set->erase(m_Entry); } |
+ |
+ private: |
+ std::set<T>* const m_Set; |
+ const T m_Entry; |
+}; |
+ |
// Indexed by 8-bit char code, contains unicode code points. |
extern const FX_WORD PDFDocEncoding[256]; |
@@ -168,7 +182,9 @@ class CPDF_Document : public CFX_PrivateData, public CPDF_IndirectObjectHolder { |
CFX_DWordArray m_PageList; |
- int _GetPageCount() const; |
+ // Retrieve page count information by getting count value from the tree nodes |
+ // or walking through the tree nodes to calculate it. |
+ int RetrievePageCount() const; |
CPDF_Dictionary* _FindPDFPage(CPDF_Dictionary* pPages, |
int iPage, |
int nPagesToGo, |