Index: fpdfsdk/src/fpdf_flatten.cpp |
diff --git a/fpdfsdk/src/fpdf_flatten.cpp b/fpdfsdk/src/fpdf_flatten.cpp |
index 36b8319dcace85d09f5fa6f5750dd8091bca37af..9aee35f7608ebfea531152edef7b1048d0b4e825 100644 |
--- a/fpdfsdk/src/fpdf_flatten.cpp |
+++ b/fpdfsdk/src/fpdf_flatten.cpp |
@@ -35,17 +35,14 @@ FX_BOOL IsValiableRect(CPDF_Rect rect, CPDF_Rect rcPage) { |
return TRUE; |
} |
-FX_BOOL GetContentsRect(CPDF_Document* pDoc, |
- CPDF_Dictionary* pDict, |
- CPDF_RectArray* pRectArray) { |
- CPDF_Page* pPDFPage = new CPDF_Page; |
+void GetContentsRect(CPDF_Document* pDoc, |
+ CPDF_Dictionary* pDict, |
+ CPDF_RectArray* pRectArray) { |
+ std::unique_ptr<CPDF_Page> pPDFPage(new CPDF_Page); |
pPDFPage->Load(pDoc, pDict, FALSE); |
pPDFPage->ParseContent(nullptr); |
- FX_POSITION pos = pPDFPage->GetPageObjectList()->GetHeadPosition(); |
- while (pos) { |
- CPDF_PageObject* pPageObject = |
- pPDFPage->GetPageObjectList()->GetNextObject(pos); |
+ for (auto& pPageObject : *pPDFPage->GetPageObjectList()) { |
if (!pPageObject) |
continue; |
@@ -54,14 +51,9 @@ FX_BOOL GetContentsRect(CPDF_Document* pDoc, |
rc.right = pPageObject->m_Right; |
rc.bottom = pPageObject->m_Bottom; |
rc.top = pPageObject->m_Top; |
- |
- if (IsValiableRect(rc, pDict->GetRectBy("MediaBox"))) { |
+ if (IsValiableRect(rc, pDict->GetRectBy("MediaBox"))) |
pRectArray->Add(rc); |
- } |
} |
- |
- delete pPDFPage; |
- return TRUE; |
} |
void ParserStream(CPDF_Dictionary* pPageDic, |