Chromium Code Reviews| Index: core/include/fpdfapi/fpdf_parser.h |
| diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h |
| index 756850932e5573fcb1f43704fe4cc3364a365db9..bb6b8ac58eb2ce0518d3d3afd9ad86a7245e8980 100644 |
| --- a/core/include/fpdfapi/fpdf_parser.h |
| +++ b/core/include/fpdfapi/fpdf_parser.h |
| @@ -9,6 +9,7 @@ |
| #include <map> |
| #include <memory> |
| +#include <set> |
| #include "core/include/fpdfapi/fpdf_objects.h" |
| #include "core/include/fxcrt/fx_system.h" |
| @@ -364,6 +365,21 @@ struct PARSE_CONTEXT { |
| #define PDFPARSE_ERROR_HANDLER 4 |
| #define PDFPARSE_ERROR_CERT 5 |
| +template <typename T> |
| +class ScopedSetInsertion { |
|
Lei Zhang
2016/01/08 20:27:07
Move this to fpdf_parser_parser.cpp's anonymous na
Wei Li
2016/01/08 22:01:50
Done.
|
| + public: |
| + ScopedSetInsertion(std::set<T>* org_set, T elem) { |
| + org_set->insert(elem); |
| + set = org_set; |
|
Lei Zhang
2016/01/08 20:27:07
Put these in the initializer list instead?
Wei Li
2016/01/08 22:01:50
Done.
|
| + entry = elem; |
| + } |
| + ~ScopedSetInsertion() { set->erase(entry); } |
| + |
| + private: |
| + std::set<T>* set; |
|
Lei Zhang
2016/01/08 20:27:07
std::set<T>* const m_set;
Lei Zhang
2016/01/08 20:27:07
m_set / m_entry
Wei Li
2016/01/08 22:01:50
Done.
Wei Li
2016/01/08 22:01:50
Done.
|
| + T entry; |
| +}; |
| + |
| class CPDF_Parser { |
| public: |
| CPDF_Parser(); |
| @@ -536,6 +552,9 @@ class CPDF_Parser { |
| // streams in |m_ObjectStreamMap| are valid. |
| std::map<CPDF_StreamAcc*, StreamObjectCache> m_ObjCache; |
| + // All indirect object numbers that are being parsed. |
| + std::set<FX_DWORD> objnums_in_processing; |
|
Lei Zhang
2016/01/08 20:27:07
Also m_SomeThing.
Wei Li
2016/01/08 22:01:50
Done.
|
| + |
| friend class CPDF_Creator; |
| friend class CPDF_DataAvail; |
| }; |