Index: fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp |
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp |
index 9bb14183798f5a960484c42c914085c51aeebcec..6e199e2ff1143effeed99823771a21981b409df8 100644 |
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp |
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp |
@@ -437,14 +437,15 @@ void CPDFXFA_DocEnvironment::ExportData(CXFA_FFDoc* hDoc, |
if (!pFileHandler) |
return; |
- CFPDF_FileStream fileWrite(pFileHandler); |
+ std::unique_ptr<IFX_SeekableStream, ReleaseDeleter<IFX_SeekableStream>> |
+ fileWrite(MakeSeekableStream(pFileHandler)); |
CFX_ByteString content; |
if (fileType == FXFA_SAVEAS_XML) { |
content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; |
- fileWrite.WriteBlock(content.c_str(), fileWrite.GetSize(), |
- content.GetLength()); |
- m_pContext->GetXFADocView()->GetDoc()->SavePackage(XFA_HASHCODE_Data, |
- &fileWrite, nullptr); |
+ fileWrite->WriteBlock(content.c_str(), fileWrite->GetSize(), |
+ content.GetLength()); |
+ m_pContext->GetXFADocView()->GetDoc()->SavePackage( |
+ XFA_HASHCODE_Data, fileWrite.get(), nullptr); |
} else if (fileType == FXFA_SAVEAS_XDP) { |
if (!m_pContext->GetPDFDoc()) |
return; |
@@ -474,13 +475,13 @@ void CPDFXFA_DocEnvironment::ExportData(CXFA_FFDoc* hDoc, |
if (!pStream) |
continue; |
if (pPrePDFObj->GetString() == "form") { |
- m_pContext->GetXFADocView()->GetDoc()->SavePackage(XFA_HASHCODE_Form, |
- &fileWrite, nullptr); |
+ m_pContext->GetXFADocView()->GetDoc()->SavePackage( |
+ XFA_HASHCODE_Form, fileWrite.get(), nullptr); |
continue; |
} |
if (pPrePDFObj->GetString() == "datasets") { |
m_pContext->GetXFADocView()->GetDoc()->SavePackage( |
- XFA_HASHCODE_Datasets, &fileWrite, nullptr); |
+ XFA_HASHCODE_Datasets, fileWrite.get(), nullptr); |
continue; |
} |
if (i == size - 1) { |
@@ -491,18 +492,16 @@ void CPDFXFA_DocEnvironment::ExportData(CXFA_FFDoc* hDoc, |
const char* szFormat = |
"\n<pdf href=\"%s\" xmlns=\"http://ns.adobe.com/xdp/pdf/\"/>"; |
content.Format(szFormat, bPath.c_str()); |
- fileWrite.WriteBlock(content.c_str(), fileWrite.GetSize(), |
- content.GetLength()); |
+ fileWrite->WriteBlock(content.c_str(), fileWrite->GetSize(), |
+ content.GetLength()); |
} |
std::unique_ptr<CPDF_StreamAcc> pAcc(new CPDF_StreamAcc); |
pAcc->LoadAllData(pStream); |
- fileWrite.WriteBlock(pAcc->GetData(), fileWrite.GetSize(), |
- pAcc->GetSize()); |
+ fileWrite->WriteBlock(pAcc->GetData(), fileWrite->GetSize(), |
+ pAcc->GetSize()); |
} |
} |
- if (!fileWrite.Flush()) { |
- // Ignoring flush error. |
- } |
+ fileWrite->Flush(); |
} |
void CPDFXFA_DocEnvironment::GotoURL(CXFA_FFDoc* hDoc, |
@@ -715,7 +714,7 @@ IFX_SeekableReadStream* CPDFXFA_DocEnvironment::OpenLinkedFile( |
if (!pFileHandler) |
return nullptr; |
- return new CFPDF_FileStream(pFileHandler); |
+ return MakeSeekableStream(pFileHandler); |
} |
bool CPDFXFA_DocEnvironment::ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, |
@@ -730,11 +729,13 @@ bool CPDFXFA_DocEnvironment::ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, |
if (!pFormFillEnv) |
return false; |
- CFPDF_FileStream fileStream(pFileHandler); |
+ std::unique_ptr<IFX_SeekableStream, ReleaseDeleter<IFX_SeekableStream>> |
+ fileStream(MakeSeekableStream(pFileHandler)); |
+ |
if (fileType == FXFA_SAVEAS_XML) { |
const char kContent[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; |
- fileStream.WriteBlock(kContent, 0, strlen(kContent)); |
- m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Data, &fileStream, |
+ fileStream->WriteBlock(kContent, 0, strlen(kContent)); |
+ m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Data, fileStream.get(), |
nullptr); |
return true; |
} |
@@ -747,25 +748,25 @@ bool CPDFXFA_DocEnvironment::ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, |
FXFA_XMPMETA | FXFA_XFDF | FXFA_FORM; |
} |
if (!m_pContext->GetPDFDoc()) { |
- fileStream.Flush(); |
+ fileStream->Flush(); |
return false; |
} |
CPDF_Dictionary* pRoot = m_pContext->GetPDFDoc()->GetRoot(); |
if (!pRoot) { |
- fileStream.Flush(); |
+ fileStream->Flush(); |
return false; |
} |
CPDF_Dictionary* pAcroForm = pRoot->GetDictFor("AcroForm"); |
if (!pAcroForm) { |
- fileStream.Flush(); |
+ fileStream->Flush(); |
return false; |
} |
CPDF_Array* pArray = ToArray(pAcroForm->GetObjectFor("XFA")); |
if (!pArray) { |
- fileStream.Flush(); |
+ fileStream->Flush(); |
return false; |
} |
@@ -796,11 +797,11 @@ bool CPDFXFA_DocEnvironment::ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, |
if (pPrePDFObj->GetString() == "form" && !(flag & FXFA_FORM)) |
continue; |
if (pPrePDFObj->GetString() == "form") { |
- m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Form, &fileStream, |
+ m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Form, fileStream.get(), |
nullptr); |
} else if (pPrePDFObj->GetString() == "datasets") { |
- m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Datasets, &fileStream, |
- nullptr); |
+ m_pContext->GetXFADoc()->SavePackage(XFA_HASHCODE_Datasets, |
+ fileStream.get(), nullptr); |
} else { |
// PDF,creator. |
} |