Chromium Code Reviews| Index: core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
| diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
| index 85cf034c1f30bc6caf6382bb178a9353dec07a96..bb295957218b4697afa98f938c3989962123ded3 100644 |
| --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
| +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
| @@ -31,6 +31,16 @@ FX_BOOL _PDF_HasInvalidOpChar(FX_LPCSTR op) |
| } |
| return FALSE; |
| } |
| +class CPDF_StreamParserAutoClearer { |
| + public: |
| + CPDF_StreamParserAutoClearer(CPDF_StreamParser** scoped_variable, CPDF_StreamParser* new_parser) |
| + : scoped_variable_(scoped_variable) { |
| + *scoped_variable_ = new_parser; |
|
jun_fang
2014/10/14 20:54:08
nit: shall we check whether scoped_variable_ is no
|
| + } |
| + ~CPDF_StreamParserAutoClearer() { *scoped_variable_ = NULL; } |
| + private: |
| + CPDF_StreamParser** scoped_variable_; |
| +}; |
| FX_DWORD CPDF_StreamContentParser::Parse(FX_LPCBYTE pData, FX_DWORD dwSize, FX_DWORD max_cost) |
| { |
| if (m_Level > _FPDF_MAX_FORM_LEVEL_) { |
| @@ -38,7 +48,7 @@ FX_DWORD CPDF_StreamContentParser::Parse(FX_LPCBYTE pData, FX_DWORD dwSize, FX_D |
| } |
| FX_DWORD InitObjCount = m_pObjectList->CountObjects(); |
| CPDF_StreamParser syntax(pData, dwSize); |
| - m_pSyntax = &syntax; |
| + CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax); |
| m_CompatCount = 0; |
| while (1) { |
| FX_DWORD cost = m_pObjectList->CountObjects() - InitObjCount; |