| Index: core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 
| diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 
| index 7f242fdb0efdec76a33909df2a28812e1628c88a..6e02cb11b4aeb73ce6b470b890b30384a877d241 100644 | 
| --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 
| +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 
| @@ -114,7 +114,7 @@ CPDF_StreamContentParser::CPDF_StreamContentParser( | 
| CPDF_Dictionary* pPageResources, | 
| CPDF_Dictionary* pParentResources, | 
| CFX_Matrix* pmtContentToUser, | 
| -    CPDF_PageObjectList* pObjList, | 
| +    CPDF_PageObjectHolder* pObjHolder, | 
| CPDF_Dictionary* pResources, | 
| CPDF_Rect* pBBox, | 
| CPDF_ParseOptions* pOptions, | 
| @@ -124,7 +124,7 @@ CPDF_StreamContentParser::CPDF_StreamContentParser( | 
| m_pPageResources(pPageResources), | 
| m_pParentResources(pParentResources), | 
| m_pResources(pResources), | 
| -      m_pObjectList(pObjList), | 
| +      m_pObjectHolder(pObjHolder), | 
| m_Level(level), | 
| m_ParamStartPos(0), | 
| m_ParamCount(0), | 
| @@ -738,8 +738,8 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() { | 
| CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE); | 
| m_LastImageName = name; | 
| m_pLastImage = pObj->m_pImage; | 
| -    if (!m_pObjectList->HasImageMask()) | 
| -      m_pObjectList->SetHasImageMask(m_pLastImage->IsMask()); | 
| +    if (!m_pObjectHolder->HasImageMask()) | 
| +      m_pObjectHolder->SetHasImageMask(m_pLastImage->IsMask()); | 
| } else if (type == "Form") { | 
| AddForm(pXObject); | 
| } else { | 
| @@ -764,7 +764,7 @@ void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { | 
| form_bbox.Transform(&form_matrix); | 
| } | 
| CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources, | 
| -                                    &m_mtContentToUser, m_pObjectList, | 
| +                                    &m_mtContentToUser, m_pObjectHolder, | 
| pResources, &form_bbox, &m_Options, | 
| m_pCurStates.get(), m_Level + 1); | 
| parser.m_pCurStates->m_CTM = form_matrix; | 
| @@ -791,13 +791,13 @@ void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { | 
| status.m_ColorState = m_pCurStates->m_ColorState; | 
| status.m_TextState = m_pCurStates->m_TextState; | 
| pFormObj->m_pForm->ParseContent(&status, NULL, NULL, &m_Options, m_Level + 1); | 
| -  if (!m_pObjectList->BackgroundAlphaNeeded() && | 
| +  if (!m_pObjectHolder->BackgroundAlphaNeeded() && | 
| pFormObj->m_pForm->BackgroundAlphaNeeded()) { | 
| -    m_pObjectList->SetBackgroundAlphaNeeded(TRUE); | 
| +    m_pObjectHolder->SetBackgroundAlphaNeeded(TRUE); | 
| } | 
| pFormObj->CalcBoundingBox(); | 
| SetGraphicStates(pFormObj, TRUE, TRUE, TRUE); | 
| -  m_pObjectList->AddTail(pFormObj); | 
| +  m_pObjectHolder->GetPageObjectList()->AddTail(pFormObj); | 
| } | 
|  | 
| CPDF_ImageObject* CPDF_StreamContentParser::AddImage(CPDF_Stream* pStream, | 
| @@ -822,7 +822,7 @@ CPDF_ImageObject* CPDF_StreamContentParser::AddImage(CPDF_Stream* pStream, | 
| SetGraphicStates(pImageObj, pImageObj->m_pImage->IsMask(), FALSE, FALSE); | 
| pImageObj->m_Matrix = ImageMatrix; | 
| pImageObj->CalcBoundingBox(); | 
| -  m_pObjectList->AddTail(pImageObj); | 
| +  m_pObjectHolder->GetPageObjectList()->AddTail(pImageObj); | 
| return pImageObj; | 
| } | 
|  | 
| @@ -1211,7 +1211,7 @@ void CPDF_StreamContentParser::Handle_ShadeFill() { | 
| pObj->m_Right = bbox.right; | 
| pObj->m_Top = bbox.top; | 
| pObj->m_Bottom = bbox.bottom; | 
| -  m_pObjectList->AddTail(pObj); | 
| +  m_pObjectHolder->GetPageObjectList()->AddTail(pObj); | 
| } | 
|  | 
| void CPDF_StreamContentParser::Handle_SetCharSpace() { | 
| @@ -1389,7 +1389,7 @@ void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs, | 
| pCopy->Copy(pText); | 
| m_ClipTextList.Add(pCopy); | 
| } | 
| -  m_pObjectList->AddTail(pText); | 
| +  m_pObjectHolder->GetPageObjectList()->AddTail(pText); | 
| if (pKerning && pKerning[nsegs - 1] != 0) { | 
| if (!pFont->IsVertWriting()) { | 
| m_pCurStates->m_TextX -= | 
| @@ -1624,7 +1624,7 @@ void CPDF_StreamContentParser::AddPathObject(int FillType, FX_BOOL bStroke) { | 
| pPathObj->m_Matrix = matrix; | 
| SetGraphicStates(pPathObj, TRUE, FALSE, TRUE); | 
| pPathObj->CalcBoundingBox(); | 
| -    m_pObjectList->AddTail(pPathObj); | 
| +    m_pObjectHolder->GetPageObjectList()->AddTail(pPathObj); | 
| } | 
| if (PathClipType) { | 
| if (!matrix.IsIdentity()) { | 
| @@ -1641,12 +1641,13 @@ FX_DWORD CPDF_StreamContentParser::Parse(const uint8_t* pData, | 
| if (m_Level > _FPDF_MAX_FORM_LEVEL_) { | 
| return dwSize; | 
| } | 
| -  FX_DWORD InitObjCount = m_pObjectList->CountObjects(); | 
| +  FX_DWORD InitObjCount = m_pObjectHolder->GetPageObjectList()->GetCount(); | 
| CPDF_StreamParser syntax(pData, dwSize); | 
| CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax); | 
| m_CompatCount = 0; | 
| while (1) { | 
| -    FX_DWORD cost = m_pObjectList->CountObjects() - InitObjCount; | 
| +    FX_DWORD cost = | 
| +        m_pObjectHolder->GetPageObjectList()->GetCount() - InitObjCount; | 
| if (max_cost && cost >= max_cost) { | 
| break; | 
| } | 
|  |