summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp2
-rw-r--r--fpdfsdk/fpdfxfa/fpdfxfa_page.cpp9
-rw-r--r--fpdfsdk/fpdfxfa/include/fpdfxfa_page.h7
-rw-r--r--fpdfsdk/fsdk_mgr.cpp5
4 files changed, 9 insertions, 14 deletions
diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
index 4d2a559a39..7a9d074624 100644
--- a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
+++ b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
@@ -160,7 +160,7 @@ CPDFXFA_Page* CPDFXFA_Document::GetPage(int page_index) {
if (nCount > 0 && page_index < nCount) {
pPage = m_XFAPageList.GetAt(page_index);
if (pPage)
- pPage->AddRef();
+ pPage->Retain();
} else {
m_nPageCount = GetPageCount();
m_XFAPageList.SetSize(m_nPageCount);
diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_page.cpp
index 22c8f995f2..8dbbf4e07c 100644
--- a/fpdfsdk/fpdfxfa/fpdfxfa_page.cpp
+++ b/fpdfsdk/fpdfxfa/fpdfxfa_page.cpp
@@ -21,16 +21,9 @@ CPDFXFA_Page::CPDFXFA_Page(CPDFXFA_Document* pDoc, int page_index)
m_iPageIndex(page_index),
m_iRef(1) {}
-CPDFXFA_Page::~CPDFXFA_Page() {}
-
-void CPDFXFA_Page::Release() {
- if (--m_iRef > 0)
- return;
-
+CPDFXFA_Page::~CPDFXFA_Page() {
if (m_pDocument)
m_pDocument->RemovePage(this);
-
- delete this;
}
FX_BOOL CPDFXFA_Page::LoadPDFPage() {
diff --git a/fpdfsdk/fpdfxfa/include/fpdfxfa_page.h b/fpdfsdk/fpdfxfa/include/fpdfxfa_page.h
index 0f278912d6..2e08f580ed 100644
--- a/fpdfsdk/fpdfxfa/include/fpdfxfa_page.h
+++ b/fpdfsdk/fpdfxfa/include/fpdfxfa_page.h
@@ -22,8 +22,11 @@ class CPDFXFA_Page {
public:
CPDFXFA_Page(CPDFXFA_Document* pDoc, int page_index);
- void AddRef() { m_iRef++; }
- void Release();
+ void Retain() { m_iRef++; }
+ void Release() {
+ if (--m_iRef <= 0)
+ delete this;
+ }
FX_BOOL LoadPage();
FX_BOOL LoadPDFPage(CPDF_Dictionary* pageDict);
diff --git a/fpdfsdk/fsdk_mgr.cpp b/fpdfsdk/fsdk_mgr.cpp
index 2d641783f9..95a08a740c 100644
--- a/fpdfsdk/fsdk_mgr.cpp
+++ b/fpdfsdk/fsdk_mgr.cpp
@@ -12,6 +12,7 @@
#include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
#include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
#include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
+#include "core/fxcrt/include/cfx_retain_ptr.h"
#include "fpdfsdk/formfiller/cffl_formfiller.h"
#include "fpdfsdk/include/fsdk_define.h"
#include "fpdfsdk/javascript/ijs_runtime.h"
@@ -902,7 +903,7 @@ void CPDFSDK_PageView::LoadFXAnnots() {
SetLock(TRUE);
#ifdef PDF_ENABLE_XFA
- m_page->AddRef();
+ CFX_RetainPtr<CPDFXFA_Page> protector(m_page);
if (m_pSDKDoc->GetXFADocument()->GetDocType() == DOCTYPE_DYNAMIC_XFA) {
CXFA_FFPageView* pageView = m_page->GetXFAPageView();
std::unique_ptr<IXFA_WidgetIterator> pWidgetHander(
@@ -911,7 +912,6 @@ void CPDFSDK_PageView::LoadFXAnnots() {
XFA_WIDGETFILTER_Viewable |
XFA_WIDGETFILTER_AllType));
if (!pWidgetHander) {
- m_page->Release();
SetLock(FALSE);
return;
}
@@ -944,7 +944,6 @@ void CPDFSDK_PageView::LoadFXAnnots() {
pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
}
}
- m_page->Release();
#else // PDF_ENABLE_XFA
for (size_t i = 0; i < nCount; ++i) {
CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);