summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/include/fpdfapi/fpdf_pageobj.h5
-rw-r--r--core/src/fpdfapi/fpdf_page/fpdf_page.cpp19
-rw-r--r--core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp3
-rw-r--r--core/src/fpdfdoc/doc_annot.cpp10
4 files changed, 11 insertions, 26 deletions
diff --git a/core/include/fpdfapi/fpdf_pageobj.h b/core/include/fpdfapi/fpdf_pageobj.h
index bd11a209f0..e78c9bb8b2 100644
--- a/core/include/fpdfapi/fpdf_pageobj.h
+++ b/core/include/fpdfapi/fpdf_pageobj.h
@@ -455,10 +455,8 @@ public:
class CPDF_PageObject : public CPDF_GraphicStates
{
public:
-
static CPDF_PageObject* Create(int type);
-
- void Release();
+ virtual ~CPDF_PageObject();
CPDF_PageObject* Clone() const;
@@ -505,7 +503,6 @@ protected:
CPDF_PageObject() {}
- virtual ~CPDF_PageObject() {}
};
struct CPDF_TextObjectItem {
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
index 998bc274b0..4ec753d751 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
@@ -7,10 +7,6 @@
#include "../../../include/fpdfapi/fpdf_page.h"
#include "../../../include/fpdfapi/fpdf_module.h"
#include "pageint.h"
-void CPDF_PageObject::Release()
-{
- delete this;
-}
CPDF_PageObject* CPDF_PageObject::Create(int type)
{
switch (type) {
@@ -27,6 +23,9 @@ CPDF_PageObject* CPDF_PageObject::Create(int type)
}
return NULL;
}
+CPDF_PageObject::~CPDF_PageObject()
+{
+}
CPDF_PageObject* CPDF_PageObject::Clone() const
{
CPDF_PageObject* pObj = Create(m_Type);
@@ -689,11 +688,7 @@ CPDF_PageObjects::~CPDF_PageObjects()
}
FX_POSITION pos = m_ObjectList.GetHeadPosition();
while (pos) {
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos);
- if (!pPageObj) {
- continue;
- }
- pPageObj->Release();
+ delete (CPDF_PageObject*)m_ObjectList.GetNext(pos);
}
}
void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause)
@@ -808,11 +803,7 @@ void CPDF_PageObjects::ClearCacheObjects()
if (m_bReleaseMembers) {
FX_POSITION pos = m_ObjectList.GetHeadPosition();
while (pos) {
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos);
- if (!pPageObj) {
- continue;
- }
- pPageObj->Release();
+ delete (CPDF_PageObject*)m_ObjectList.GetNext(pos);
}
}
m_ObjectList.RemoveAll();
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
index 40ec13ea6e..f79fcda0a0 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
@@ -192,8 +192,7 @@ void CPDF_ClipPath::AppendTexts(CPDF_TextObject** pTexts, int count)
CPDF_ClipPathData* pData = GetModify();
if (pData->m_TextCount + count > FPDF_CLIPPATH_MAX_TEXTS) {
for (int i = 0; i < count; i ++) {
- if (pTexts[i])
- pTexts[i]->Release();
+ delete pTexts[i];
}
return;
}
diff --git a/core/src/fpdfdoc/doc_annot.cpp b/core/src/fpdfdoc/doc_annot.cpp
index cc6b5ccfee..4ccce21f1c 100644
--- a/core/src/fpdfdoc/doc_annot.cpp
+++ b/core/src/fpdfdoc/doc_annot.cpp
@@ -4,8 +4,10 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+#include "../../../third_party/base/nonstd_unique_ptr.h"
#include "../../include/fpdfdoc/fpdf_doc.h"
#include "../../include/fpdfapi/fpdf_pageobj.h"
+
CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage)
{
ASSERT(pPage != NULL);
@@ -317,16 +319,14 @@ CPDF_PageObject* CPDF_Annot::GetBorder(FX_BOOL bPrint, const CPDF_RenderOptions*
int B = (FX_INT32)(pColor->GetNumber(2) * 255);
argb = ArgbEncode(0xff, R, G, B);
}
- CPDF_PathObject *pPathObject = new CPDF_PathObject();
+ nonstd::unique_ptr<CPDF_PathObject> pPathObject(new CPDF_PathObject());
CPDF_GraphStateData *pGraphState = pPathObject->m_GraphState.GetModify();
if (!pGraphState) {
- pPathObject->Release();
return NULL;
}
pGraphState->m_LineWidth = width;
CPDF_ColorStateData *pColorData = pPathObject->m_ColorState.GetModify();
if (!pColorData) {
- pPathObject->Release();
return NULL;
}
pColorData->m_StrokeRGB = argb;
@@ -340,7 +340,6 @@ CPDF_PageObject* CPDF_Annot::GetBorder(FX_BOOL bPrint, const CPDF_RenderOptions*
}
pGraphState->m_DashArray = FX_Alloc(FX_FLOAT, dash_count);
if (pGraphState->m_DashArray == NULL) {
- pPathObject->Release();
return NULL;
}
pGraphState->m_DashCount = dash_count;
@@ -354,7 +353,6 @@ CPDF_PageObject* CPDF_Annot::GetBorder(FX_BOOL bPrint, const CPDF_RenderOptions*
} else {
pGraphState->m_DashArray = FX_Alloc(FX_FLOAT, 2);
if (pGraphState->m_DashArray == NULL) {
- pPathObject->Release();
return NULL;
}
pGraphState->m_DashCount = 2;
@@ -369,7 +367,7 @@ CPDF_PageObject* CPDF_Annot::GetBorder(FX_BOOL bPrint, const CPDF_RenderOptions*
pPathData->AppendRect(rect.left + width, rect.bottom + width, rect.right - width, rect.top - width);
}
pPathObject->CalcBoundingBox();
- return pPathObject;
+ return pPathObject.release();
}
void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pUser2Device, const CPDF_RenderOptions* pOptions)
{