| Index: core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 
| diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 
| index 0ea941a1e6be4e2184728a2db12b60888477af02..0023ee92dea26231f811d7731448329a30bef0d2 100644 | 
| --- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 
| +++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 
| @@ -237,17 +237,19 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, | 
| m_Transparency = transparency; | 
| return TRUE; | 
| } | 
| -void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjectList* pObjs, | 
| -                                         const CFX_Matrix* pObj2Device) { | 
| +void CPDF_RenderStatus::RenderObjectList( | 
| +    const CPDF_PageObjectHolder* pObjectHolder, | 
| +    const CFX_Matrix* pObj2Device) { | 
| CFX_FloatRect clip_rect = m_pDevice->GetClipBox(); | 
| CFX_Matrix device2object; | 
| device2object.SetReverse(*pObj2Device); | 
| device2object.TransformRect(clip_rect); | 
| int index = 0; | 
| -  FX_POSITION pos = pObjs->GetFirstObjectPosition(); | 
| +  FX_POSITION pos = pObjectHolder->GetPageObjectList()->GetHeadPosition(); | 
| while (pos) { | 
| index++; | 
| -    CPDF_PageObject* pCurObj = pObjs->GetNextObject(pos); | 
| +    CPDF_PageObject* pCurObj = | 
| +        pObjectHolder->GetPageObjectList()->GetNextObject(pos); | 
| if (pCurObj == m_pStopObj) { | 
| m_bStopped = TRUE; | 
| return; | 
| @@ -971,10 +973,10 @@ CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc, | 
|  | 
| CPDF_RenderContext::~CPDF_RenderContext() {} | 
|  | 
| -void CPDF_RenderContext::AppendLayer(CPDF_PageObjectList* pObjs, | 
| +void CPDF_RenderContext::AppendLayer(CPDF_PageObjectHolder* pObjectHolder, | 
| const CFX_Matrix* pObject2Device) { | 
| Layer* pLayer = m_Layers.AddSpace(); | 
| -  pLayer->m_pObjectList = pObjs; | 
| +  pLayer->m_pObjectHolder = pObjectHolder; | 
| if (pObject2Device) { | 
| pLayer->m_Matrix = *pObject2Device; | 
| } else { | 
| @@ -999,9 +1001,9 @@ void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, | 
| FinalMatrix.Concat(*pLastMatrix); | 
| CPDF_RenderStatus status; | 
| status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL, | 
| -                        pOptions, pLayer->m_pObjectList->m_Transparency, FALSE, | 
| -                        NULL); | 
| -      status.RenderObjectList(pLayer->m_pObjectList, &FinalMatrix); | 
| +                        pOptions, pLayer->m_pObjectHolder->m_Transparency, | 
| +                        FALSE, NULL); | 
| +      status.RenderObjectList(pLayer->m_pObjectHolder, &FinalMatrix); | 
| if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { | 
| m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); | 
| } | 
| @@ -1012,8 +1014,8 @@ void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, | 
| } else { | 
| CPDF_RenderStatus status; | 
| status.Initialize(this, pDevice, NULL, pStopObj, NULL, NULL, pOptions, | 
| -                        pLayer->m_pObjectList->m_Transparency, FALSE, NULL); | 
| -      status.RenderObjectList(pLayer->m_pObjectList, &pLayer->m_Matrix); | 
| +                        pLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); | 
| +      status.RenderObjectList(pLayer->m_pObjectHolder, &pLayer->m_Matrix); | 
| if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { | 
| m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); | 
| } | 
| @@ -1064,7 +1066,7 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { | 
| m_pRenderStatus.reset(new CPDF_RenderStatus()); | 
| m_pRenderStatus->Initialize( | 
| m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions, | 
| -          m_pCurrentLayer->m_pObjectList->m_Transparency, FALSE, NULL); | 
| +          m_pCurrentLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); | 
| m_pDevice->SaveState(); | 
| m_ClipRect = m_pDevice->GetClipBox(); | 
| CFX_Matrix device2object; | 
| @@ -1074,14 +1076,16 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { | 
| FX_POSITION pos; | 
| if (m_LastObjectRendered) { | 
| pos = m_LastObjectRendered; | 
| -      m_pCurrentLayer->m_pObjectList->GetNextObject(pos); | 
| +      m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos); | 
| } else { | 
| -      pos = m_pCurrentLayer->m_pObjectList->GetFirstObjectPosition(); | 
| +      pos = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList() | 
| +                ->GetHeadPosition(); | 
| } | 
| int nObjsToGo = kStepLimit; | 
| while (pos) { | 
| CPDF_PageObject* pCurObj = | 
| -          m_pCurrentLayer->m_pObjectList->GetObjectAt(pos); | 
| +          m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetObjectAt( | 
| +              pos); | 
| if (pCurObj && pCurObj->m_Left <= m_ClipRect.right && | 
| pCurObj->m_Right >= m_ClipRect.left && | 
| pCurObj->m_Bottom <= m_ClipRect.top && | 
| @@ -1108,9 +1112,9 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { | 
| return; | 
| nObjsToGo = kStepLimit; | 
| } | 
| -      m_pCurrentLayer->m_pObjectList->GetNextObject(pos); | 
| +      m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos); | 
| } | 
| -    if (m_pCurrentLayer->m_pObjectList->IsParsed()) { | 
| +    if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) { | 
| m_pRenderStatus.reset(); | 
| m_pDevice->RestoreState(); | 
| m_pCurrentLayer = nullptr; | 
| @@ -1120,8 +1124,8 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { | 
| return; | 
| } | 
| } else { | 
| -      m_pCurrentLayer->m_pObjectList->ContinueParse(pPause); | 
| -      if (!m_pCurrentLayer->m_pObjectList->IsParsed()) | 
| +      m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause); | 
| +      if (!m_pCurrentLayer->m_pObjectHolder->IsParsed()) | 
| return; | 
| } | 
| } | 
|  |