Index: fpdfsdk/fpdfxfa/cpdfxfa_document.cpp |
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_document.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_document.cpp |
index e49cfde8c4892b6a423b94fd27570a86ebe54401..121d0604534a418a2829423a0d01f75ccab94b8e 100644 |
--- a/fpdfsdk/fpdfxfa/cpdfxfa_document.cpp |
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_document.cpp |
@@ -33,6 +33,7 @@ CPDFXFA_Document::CPDFXFA_Document(std::unique_ptr<CPDF_Document> pPDFDoc, |
CPDFXFA_App* pProvider) |
: m_iDocType(DOCTYPE_PDF), |
m_pPDFDoc(std::move(pPDFDoc)), |
+ m_pSDKDoc(nullptr), |
m_pXFADocView(nullptr), |
m_pApp(pProvider), |
m_nLoadStatus(FXFA_LOADSTATUS_PRELOAD), |
@@ -42,6 +43,11 @@ CPDFXFA_Document::CPDFXFA_Document(std::unique_ptr<CPDF_Document> pPDFDoc, |
CPDFXFA_Document::~CPDFXFA_Document() { |
m_nLoadStatus = FXFA_LOADSTATUS_CLOSING; |
+ if (m_pSDKDoc) { |
+ m_pSDKDoc->ClearAllFocusedAnnots(); |
+ m_pSDKDoc = nullptr; |
+ } |
+ |
if (m_pXFADoc) { |
CXFA_FFApp* pApp = m_pApp->GetXFAApp(); |
if (pApp) { |
@@ -191,10 +197,6 @@ void CPDFXFA_Document::RemovePage(CPDFXFA_Page* page) { |
m_XFAPageList.SetAt(page->GetPageIndex(), nullptr); |
} |
-void CPDFXFA_Document::SetSDKDoc(std::unique_ptr<CPDFSDK_Document> pSDKDoc) { |
- m_pSDKDoc.reset(pSDKDoc.release()); |
-} |
- |
void CPDFXFA_Document::ClearChangeMark() { |
if (m_pSDKDoc) |
m_pSDKDoc->ClearChangeMark(); |