Index: fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
index 605e53c32a94e5773c9d123114bc0d80bacc12db..d4c43c570679c9c22f2b8732600e718f76ca4145 100644 |
--- a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
+++ b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
@@ -45,10 +45,10 @@ extern void SetLastError(int err); |
extern int GetLastError(); |
#endif |
-CPDFXFA_Document::CPDFXFA_Document(CPDF_Document* pPDFDoc, |
+CPDFXFA_Document::CPDFXFA_Document(std::unique_ptr<CPDF_Document> pPDFDoc, |
CPDFXFA_App* pProvider) |
: m_iDocType(DOCTYPE_PDF), |
- m_pPDFDoc(pPDFDoc), |
+ m_pPDFDoc(std::move(pPDFDoc)), |
m_pXFADocView(nullptr), |
m_pApp(pProvider), |
m_pJSContext(nullptr), |
@@ -70,16 +70,6 @@ CPDFXFA_Document::~CPDFXFA_Document() { |
} |
if (m_pJSContext && m_pSDKDoc && m_pSDKDoc->GetEnv()) |
m_pSDKDoc->GetEnv()->GetJSRuntime()->ReleaseContext(m_pJSContext); |
- // |m_pSDKDoc| has to be released before |pParser| and |m_pPDFDoc| since it |
- // needs to access them to kill focused annotations. |
- m_pSDKDoc.reset(); |
- if (m_pPDFDoc) { |
- CPDF_Parser* pParser = m_pPDFDoc->GetParser(); |
- if (pParser) |
- delete pParser; |
- else |
- delete m_pPDFDoc; |
- } |
m_nLoadStatus = FXFA_LOADSTATUS_CLOSED; |
} |
@@ -96,7 +86,7 @@ FX_BOOL CPDFXFA_Document::LoadXFADoc() { |
if (!pApp) |
return FALSE; |
- m_pXFADoc.reset(pApp->CreateDoc(this, m_pPDFDoc)); |
+ m_pXFADoc.reset(pApp->CreateDoc(this, m_pPDFDoc.get())); |
if (!m_pXFADoc) { |
SetLastError(FPDF_ERR_XFALOAD); |
return FALSE; |