Index: fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
index 9d8fb42059237ee0bf6c4f7b92eb95f72cb27259..c8aca0d5b032a46acd06af5ee5254c026e9f7529 100644 |
--- a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
+++ b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp |
@@ -677,8 +677,8 @@ void CPDFXFA_Document::ExportData(CXFA_FFDoc* hDoc, |
continue; |
if (!pPDFObj->IsReference()) |
continue; |
- CPDF_Object* pDirectObj = pPDFObj->GetDirect(); |
- if (!pDirectObj->IsStream()) |
+ CPDF_Stream* pStream = ToStream(pPDFObj->GetDirect()); |
+ if (!pStream) |
continue; |
if (pPrePDFObj->GetString() == "form") { |
m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Form, &fileWrite, |
@@ -698,13 +698,10 @@ void CPDFXFA_Document::ExportData(CXFA_FFDoc* hDoc, |
fileWrite.WriteBlock(content.c_str(), fileWrite.GetSize(), |
content.GetLength()); |
} |
- |
- CPDF_Stream* pStream = (CPDF_Stream*)pDirectObj; |
- CPDF_StreamAcc* pAcc = new CPDF_StreamAcc; |
+ std::unique_ptr<CPDF_StreamAcc> pAcc(new CPDF_StreamAcc); |
pAcc->LoadAllData(pStream); |
fileWrite.WriteBlock(pAcc->GetData(), fileWrite.GetSize(), |
pAcc->GetSize()); |
- delete pAcc; |
} |
} |
} |