diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-07-23 14:36:34 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-07-23 14:36:34 -0700 |
commit | 90144588255a87dea9e261bd909f2eece31a97b9 (patch) | |
tree | 975b465936fecaed1c6fd20fa8b37c816a591784 /core/src/fpdfapi/fpdf_page | |
parent | f1e7c461dfabbff6b65a072f24f6711b34159361 (diff) | |
download | pdfium-90144588255a87dea9e261bd909f2eece31a97b9.tar.xz |
FX_BOOL not always 0 or 1 in CPDF_PageObjects::m_ParserState
This fixes part of the failure encountered at 320b2313d198.
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1257503002 .
Diffstat (limited to 'core/src/fpdfapi/fpdf_page')
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page.cpp | 38 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 16 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/pageint.h | 10 |
3 files changed, 26 insertions, 38 deletions
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp index c0cdb228f4..f404352318 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp @@ -720,14 +720,19 @@ void CPDF_FormObject::CalcBoundingBox() m_Right = form_rect.right; m_Top = form_rect.top; } -CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers) : m_ObjectList(128) +CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers) + : m_pFormDict(nullptr), + m_pFormStream(nullptr), + m_pDocument(nullptr), + m_pPageResources(nullptr), + m_pResources(nullptr), + m_Transparency(0), + m_ObjectList(128), + m_bBackgroundAlphaNeeded(FALSE), + m_bReleaseMembers(bReleaseMembers), + m_pParser(nullptr), + m_ParseState(CONTENT_NOT_PARSED) { - m_bBackgroundAlphaNeeded = FALSE; - m_bReleaseMembers = bReleaseMembers; - m_ParseState = PDF_CONTENT_NOT_PARSED; - m_pParser = NULL; - m_pFormStream = NULL; - m_pResources = NULL; } CPDF_PageObjects::~CPDF_PageObjects() { @@ -747,18 +752,11 @@ void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause) } m_pParser->Continue(pPause); if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { - m_ParseState = PDF_CONTENT_PARSED; + m_ParseState = CONTENT_PARSED; delete m_pParser; m_pParser = NULL; } } -int CPDF_PageObjects::EstimateParseProgress() const -{ - if (!m_pParser) { - return m_ParseState == PDF_CONTENT_PARSED ? 100 : 0; - } - return m_pParser->EstimateProgress(); -} FX_POSITION CPDF_PageObjects::InsertObject(FX_POSITION posInsertAfter, CPDF_PageObject* pNewObject) { if (!posInsertAfter) { @@ -843,7 +841,7 @@ void CPDF_PageObjects::LoadTransInfo() } void CPDF_PageObjects::ClearCacheObjects() { - m_ParseState = PDF_CONTENT_NOT_PARSED; + m_ParseState = CONTENT_NOT_PARSED; delete m_pParser; m_pParser = NULL; if (m_bReleaseMembers) { @@ -930,12 +928,12 @@ void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions, FX_BOOL bReParse) if (bReParse) { ClearCacheObjects(); } - if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { return; } m_pParser = new CPDF_ContentParser; m_pParser->Start(this, pOptions); - m_ParseState = PDF_CONTENT_PARSING; + m_ParseState = CONTENT_PARSING; } void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions, FX_BOOL bReParse) { @@ -994,12 +992,12 @@ CPDF_Form::~CPDF_Form() void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level) { - if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { return; } m_pParser = new CPDF_ContentParser; m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions, level); - m_ParseState = PDF_CONTENT_PARSING; + m_ParseState = CONTENT_PARSING; } void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level) 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 37ffea9742..b2cfce73d9 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp @@ -1133,19 +1133,3 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause) } } } -int CPDF_ContentParser::EstimateProgress() -{ - if (m_Status == Ready) { - return 0; - } - if (m_Status == Done) { - return 100; - } - if (m_InternalStage == PAGEPARSE_STAGE_GETCONTENT) { - return 10; - } - if (m_InternalStage == PAGEPARSE_STAGE_CHECKCLIP) { - return 90; - } - return 10 + 80 * m_CurrentOffset / m_Size; -} diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h index cf1fe47c0d..8cd393cf32 100644 --- a/core/src/fpdfapi/fpdf_page/pageint.h +++ b/core/src/fpdfapi/fpdf_page/pageint.h @@ -309,9 +309,15 @@ protected: class CPDF_ContentParser { public: + enum ParseStatus { + Ready, + ToBeContinued, + Done + }; + CPDF_ContentParser(); ~CPDF_ContentParser(); - typedef enum { Ready, ToBeContinued, Done } ParseStatus; + ParseStatus GetStatus() { return m_Status; @@ -320,7 +326,7 @@ public: void Start(CPDF_Form* pForm, CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level); void Continue(IFX_Pause* pPause); - int EstimateProgress(); + protected: void Clear(); ParseStatus m_Status; |