Index: fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
index 7c2bbf0aea34414cdd757b3ccc1310b3a3965c29..d37038d2af6ef580edbcfacb16bf9671a50a7385 100644 |
--- a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
+++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
@@ -45,26 +45,28 @@ CPDFXFA_Document::CPDFXFA_Document(CPDF_Document* pPDFDoc, |
} |
CPDFXFA_Document::~CPDFXFA_Document() { |
+ if (m_pJSContext && m_pSDKDoc && m_pSDKDoc->GetEnv()) |
+ m_pSDKDoc->GetEnv()->GetJSRuntime()->ReleaseContext(m_pJSContext); |
+ |
+ delete m_pSDKDoc; |
+ |
+ if (m_pPDFDoc) { |
+ CPDF_Parser* pParser = m_pPDFDoc->GetParser(); |
+ if (pParser) |
+ delete pParser; |
+ else |
+ delete m_pPDFDoc; |
+ } |
if (m_pXFADoc) { |
IXFA_App* pApp = m_pApp->GetXFAApp(); |
if (pApp) { |
IXFA_DocHandler* pDocHandler = pApp->GetDocHandler(); |
- if (pDocHandler) |
+ if (pDocHandler) { |
CloseXFADoc(pDocHandler); |
+ } |
} |
delete m_pXFADoc; |
- m_pXFADoc = nullptr; |
} |
- if (m_pPDFDoc) { |
- CPDF_Parser* pParser = m_pPDFDoc->GetParser(); |
- if (pParser) |
- delete pParser; |
- else |
- delete m_pPDFDoc; |
- } |
- if (m_pJSContext && m_pSDKDoc && m_pSDKDoc->GetEnv()) |
- m_pSDKDoc->GetEnv()->GetJSRuntime()->ReleaseContext(m_pJSContext); |
- delete m_pSDKDoc; |
} |
FX_BOOL CPDFXFA_Document::LoadXFADoc() { |
@@ -485,6 +487,7 @@ void CPDFXFA_Document::PageViewEvent(IXFA_PageView* pPageView, |
if (!pPage) |
return; |
pPage->SetXFAPageView(nullptr); |
+ m_pSDKDoc->GetPageView(pPage)->ClearFXAnnots(); |
} |
void CPDFXFA_Document::WidgetEvent(IXFA_Widget* hWidget, |