| 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;
|
| }
|
|
|
|
|