Index: xfa/fxfa/app/xfa_ffdoc.cpp |
diff --git a/xfa/fxfa/app/xfa_ffdoc.cpp b/xfa/fxfa/app/xfa_ffdoc.cpp |
index f33e4e0585868226f5f796b330255a3021a6d06d..77c3b251a250d79ad5541b7fc80a2a34bfbc39e2 100644 |
--- a/xfa/fxfa/app/xfa_ffdoc.cpp |
+++ b/xfa/fxfa/app/xfa_ffdoc.cpp |
@@ -7,6 +7,7 @@ |
#include "xfa/fxfa/include/xfa_ffdoc.h" |
#include <algorithm> |
+#include <memory> |
#include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
#include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
@@ -145,10 +146,11 @@ int32_t CXFA_FFDoc::DoLoad(IFX_Pause* pPause) { |
if (!OpenDoc(pPDFDocument)) { |
return XFA_PARSESTATUS_SyntaxErr; |
} |
- IXFA_Parser* pParser = IXFA_Parser::Create(m_pDocument, TRUE); |
- if (!pParser) { |
+ std::unique_ptr<IXFA_Parser> pParser( |
+ IXFA_Parser::Create(m_pDocument, TRUE)); |
+ if (!pParser) |
return XFA_PARSESTATUS_SyntaxErr; |
- } |
+ |
CXFA_Node* pRootNode = NULL; |
if (pParser->StartParse(m_pStream) == XFA_PARSESTATUS_Ready && |
pParser->DoParse(NULL) == XFA_PARSESTATUS_Done) { |
@@ -160,8 +162,6 @@ int32_t CXFA_FFDoc::DoLoad(IFX_Pause* pPause) { |
} else { |
iStatus = XFA_PARSESTATUS_StatusErr; |
} |
- pParser->Release(); |
- pParser = NULL; |
} |
return iStatus; |
} |
@@ -265,7 +265,7 @@ FX_BOOL CXFA_FFDoc::CloseDoc() { |
m_TypeToDocViewMap.clear(); |
if (m_pDocument) { |
- m_pDocument->GetParser()->Release(); |
+ m_pDocument->DestroyParser(); |
m_pDocument = nullptr; |
} |